参阅基础
相关习题
LeetCode 26.删除有序数组中的重复项
题目
来源:https://leetcode.cn/problems/remove-duplicates-from-sorted-array/
难度:简单
我的题解
思路:运用快慢指针技巧。设置fast
引为1,slow
索引为0,快指针在前面探路,找到一个不重复的就赋值给slow并让其前进一步去准备接受下一个不重复的值。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
var removeDuplicates = function(nums) { let fast = 1; let slow = 0;
while(fast < nums.length){ if(nums[fast] != nums[slow]){ slow++; nums[slow] = nums[fast]; } fast++ }
return slow+1; };
|
Leetcode 167.两数之和
题目
来源:https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted/
难度:中等
我的题解
思路:因为数组有序,所以使用双指针中的左右指针技巧(相向而行),通过调节 left
和 right
就可以调整 sum 的大小。直到 left >= right 结束。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
var twoSum = function(numbers, target) { let left = 0,right = numbers.length-1; while(left < right){ let sum = numbers[left] + numbers[right] if(sum === target){ return [left+1,right+1]; } else if(sum < target){ left++ } else if(sum > target){ right-- } } return [-1,-1] };
|
Leetcode 5.最长回文字串
题目
来源:https://leetcode.cn/problems/longest-palindromic-substring/
难度:中等
我的题解
思路:双指针相向而行。暴力解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
var longestPalindrome = function(s) { let res = "",s1 = "",s2 ="" for(let i = 0;i <= s.length; i++){ s1 = palindrom(s,i,i) s2 = palindrom(s,i,i+1)
res = res.length > s1.length ? res : s1; res = res.length > s2.length ? res : s2; }
return res };
let palindrom = function(s,l,r){ while(l >= 0 && r < s.length && s.charAt(l) == s.charAt(r)){ l--;r++; }
return s.substring(l + 1, r) }
|