var threeSum = function (nums) { let res = [] nums = nums.sort((a,b)=>a-b) //首先要进行排序 for (let i = 0; i < nums.length-2; i++) { //减2是因为求得是三个元素的和。 if (i > 0 && nums[i] == nums[i - 1]) continue//a去重 let left = i + 1,right = nums.length - 1//指定双指针 while (left < right) { let sum = nums[i]+nums[left]+nums[right] if (sum>0) right-- if (sum<0) left++ if(sum===0){ res.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-- } } } return res }
反转链表
自定义链表
解题代码
1 2 3 4 5 6 7 8 9 10 11 12
var reverseList = function(head) { let prev = null let cur = head while(cur){ // 这一步我忘记了,没有把next的值保存下来,直接给cur.next赋值了 const next = cur.next cur.next = prev prev = cur cur = next } return prev //最后一个cur是null,他前面一个才是第一个有值的节点 };