Algorithm:

缺求缺失的第一个正数

  1. // 计数器
  2. function firstMissingPositive(nums) {
  3. let count = 1;
  4. const filterNums = nums.sort((a, b) => a - b).filter(v => v > 0);
  5. for (let i = 0; i <= filterNums.length; i++) {
  6. if (count == filterNums[i]) {
  7. count++
  8. } else if (filterNums[i] > count) {
  9. break
  10. }
  11. }
  12. return count
  13. };
  14. // 通过下标
  15. var firstMissingPositive = function (nums) {
  16. var len = nums.length;
  17. var rect = {};
  18. for (let i = 0; i < len; i++) {
  19. let num = nums[i];
  20. if (num > len || num <= 0) continue;
  21. rect[num] = true;
  22. }
  23. for (let i = 0; i <= len; i++) {
  24. if (rect[i + 1]) continue;
  25. return i + 1;
  26. }
  27. return 1;
  28. };

合并两个有序数组

  1. // 直接合并排序
  2. var merge = function (nums1, m, nums2, n) {
  3. nums1.splice(m, nums1.length - m, ...nums2);
  4. nums1.sort((a, b) => a - b);
  5. return nums1
  6. };
  7. // 双指针
  8. var merge = function (nums1, m, nums2, n) {
  9. let arr = new Array(m + n).fill(0);
  10. let cur;
  11. for (let i = 0, j = 0; i < m || j < n;) {
  12. if (j === n) {
  13. cur = nums1[i++]
  14. } else if (i === m) {
  15. cur = nums2[j++]
  16. } else if (nums1[i] > nums2[j]) {
  17. cur = nums2[j++]
  18. } else {
  19. cur = nums1[i++]
  20. }
  21. arr[i + j - 1] = cur
  22. }
  23. for (let i = 0; i < arr.length; i++) {
  24. nums1[i] = arr[i]
  25. }
  26. return nums1
  27. };
  28. // 尾双指针
  29. var merge = function (nums1, m, nums2, n) {
  30. let i = m - 1;
  31. let j = n - 1;
  32. let tail = m + n + 1;
  33. while (tail >= 0) {
  34. nums1[tail] = num1[i] > nums2[j] ? num1[i--] : nums2[j--];
  35. tail--
  36. }
  37. return nums1
  38. };

Tips: 学习一个技术技巧

js 复杂判断

Review: 阅读并点评一篇英文技术文章

本周无

Share: 分享一篇有观点和思考的技术文章

本周无