双指针
crazy的蓝色梦想
小柒 爱前端
展开
-
快慢指针 --- Leedcode 26 删除排序数组中的重复项
题目 给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次, 返回移除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的 条件下完成。 示例: 给定 nums = [0,0,1,1,1,2,2,3,3,4], 函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。 你不需要考虑数组中超出新长度后面的元素。 解答 快慢指针来解题,nums[slow] !== nums[fast]原创 2020-09-24 08:27:41 · 252 阅读 · 0 评论 -
双指针 --- Leecode 167 两数之和(有序数组)
题目 解析 使用左右指针。 如果两指针执行的元素和 sum === target,那么返回结果 如果 sum > target, 右指针减一,使sum变小些 如果 sum < target, 左指针加一,使sum变大些 var twoSum = function (numbers, target) { if (numbers.length < 2) { return []; } let left = 0; let right = numbers.length原创 2020-09-22 17:54:35 · 250 阅读 · 0 评论 -
双指针 --- Leedcode 5 最长回文子串
题目: 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 示例 2: 输入: "cbbd" 输出: "bb" 解析: 中心扩散法:从每一个位置出发,向两边扩散即可。 首先往左寻找与当前位置相同的字符,直到遇到不相等为止。 然后往右寻找与当前位置相同的字符,直到遇到不相等为止。 最后左右双向扩散,直到左和右不相等。 var longestPalindrome =原创 2020-09-16 14:32:25 · 281 阅读 · 0 评论 -
双指针 --- leedcode 283 移动零
题目 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。 解答 双指针 i、j i 遍历整个数组 上nums[i] != 0 时,将nums[j] = nums[i], 并且 j++ 最后,i 遍历完后,把 j 以后剩余的位置赋值为 0 var moveZeroes = function(nums) {原创 2020-05-13 10:29:19 · 189 阅读 · 0 评论 -
双指针/链表 leecode 21 合并两个有序链表 (Easy)
题目 将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 解析 思路: 创建一个新链表 使用双指针遍历两个链表 /** * Definition for singly-linked list. * ...原创 2020-03-27 22:03:01 · 265 阅读 · 0 评论 -
双指针 --- Leedcode 524 匹配最长子序列 (medium)
题目 给定一个字符串和一个字符串字典,找到字典里面最长的字符串,该字符串可以 通过删除给定字符串的某些字符来得到。如果答案不止一个,返回长度最长且字 典顺序最小的字符串。如果答案不存在,则返回空字符串。 示例 1: 输入: s = "abpcplea", d = ["ale","apple","monkey","plea"] 输出: "apple" 示例 2: 输入: s = "abpcp...原创 2020-03-15 10:10:53 · 256 阅读 · 1 评论