基础算法个人总结

张开发
2026/4/12 22:54:08 15 分钟阅读

分享文章

基础算法个人总结
1、相向双指针——两数之和三数之和var twoSum function(numbers, target) { let slow0,fastnumbers.length-1; while(slowfast){ if(numbers[slow]numbers[fast]target){ return [slow1,fast1]; }else if(numbers[slow]numbers[fast]target){ fast--; }else{ slow; } } };思路两数之和的变种对nums[i]在nums[i1]到nums[nums.length-1]找两数之和-nums[i];代码先排序再双指针单指针优化提示如果nums[i] 0可以直接break因为排序后后面的数都 ≥ nums[i];记得去重var threeSum function(nums) { const result []; const n nums.length; // 1. 排序 nums.sort((a, b) a - b); // 2. 固定第一个数 for (let i 0; i n - 2; i) { //注意如果nums[i]0,则break if(nums[i]0){break;} // 去重第一个数重复时跳过 if (i 0 nums[i] nums[i - 1]) continue; // 3. 双指针找两数之和 -nums[i] let left i 1; let right n - 1; const target -nums[i]; while (left right) { const sum nums[left] nums[right]; if (sum target) { result.push([nums[i], nums[left], nums[right]]); // 去重移动指针时跳过重复值 while (left right nums[left] nums[left 1]) left; while (left right nums[right] nums[right - 1]) right--; left; right--; } else if (sum target) { left; } else { right--; } } } return result; };

更多文章