Algorithm:
缺求缺失的第一个正数
// 计数器function firstMissingPositive(nums) {let count = 1;const filterNums = nums.sort((a, b) => a - b).filter(v => v > 0);for (let i = 0; i <= filterNums.length; i++) {if (count == filterNums[i]) {count++} else if (filterNums[i] > count) {break}}return count};// 通过下标var firstMissingPositive = function (nums) {var len = nums.length;var rect = {};for (let i = 0; i < len; i++) {let num = nums[i];if (num > len || num <= 0) continue;rect[num] = true;}for (let i = 0; i <= len; i++) {if (rect[i + 1]) continue;return i + 1;}return 1;};
合并两个有序数组
// 直接合并排序var merge = function (nums1, m, nums2, n) {nums1.splice(m, nums1.length - m, ...nums2);nums1.sort((a, b) => a - b);return nums1};// 双指针var merge = function (nums1, m, nums2, n) {let arr = new Array(m + n).fill(0);let cur;for (let i = 0, j = 0; i < m || j < n;) {if (j === n) {cur = nums1[i++]} else if (i === m) {cur = nums2[j++]} else if (nums1[i] > nums2[j]) {cur = nums2[j++]} else {cur = nums1[i++]}arr[i + j - 1] = cur}for (let i = 0; i < arr.length; i++) {nums1[i] = arr[i]}return nums1};// 尾双指针var merge = function (nums1, m, nums2, n) {let i = m - 1;let j = n - 1;let tail = m + n + 1;while (tail >= 0) {nums1[tail] = num1[i] > nums2[j] ? num1[i--] : nums2[j--];tail--}return nums1};
Tips: 学习一个技术技巧
Review: 阅读并点评一篇英文技术文章
Share: 分享一篇有观点和思考的技术文章
本周无
