![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
双指针
Is Anonymous
这个作者很懒,什么都没留下…
展开
-
leetcode戳气球【双指针、动态规划】
/核心思想一句话:求出动态规划中不变的最小子问题 接着把子问题依次推导出更大的问题 而子问题怎么不受其他子问题的影响的关键就是戳破一个气球的时候认定它是最后一个戳破的 那么就不会影响到其他子问题 用dp[i][j]来表示在(i,j)开区间的最大值 dp[i][j]求的最大值实际上是以i为未破的左气球和以j未破的右气球其中戳破的气球的最大值。原创 2022-12-27 21:24:00 · 100 阅读 · 0 评论 -
leetcode三数之和【双指针】
let nums = [0, 0, 0, 0, 0, 1]let n = nums.length;nums = Array.from(nums.sort((a, b) => a - b))let res = []// 枚举 afor (let i = 0; i < n; ++i) { // 第一次去重 if (i > 0 && nums[i] == nums[i - 1]) { continue; } let k原创 2022-04-13 18:08:55 · 252 阅读 · 0 评论 -
leetcode移动零【双指针】
let nums = [1, 2, 0, 0, 0, 2, 3, 12, 0, 0, 24]n = nums.length, right= 0, left= 0;while (right < n) { if (nums[right] != 0) {//左指针的值始终在非零处, 右指针一直移动,但是右指针遇到到非零的时候,就调换两者的值,不管左指针在哪。 temp = nums[left]; nums[left] = nums[right]; .原创 2022-03-17 16:36:49 · 83 阅读 · 0 评论 -
最短包含子串[滑动窗口、双指针]
滑动窗口1、在序列中使用双指针中的左右指针技巧,初始化 left = right = 0,把索引闭区间 [left, right] 称为一个窗口。2、先不断地增加 right 指针扩大窗口 [left, right],直到窗口中的序列符合要求。3、此时,停止增加 right,转而不断增加 left 指针缩小窗口 [left, right],直到窗口中的序列不再符合要求。同时,每次增加 left前,都要更新一轮结果。4、重复第 2 和第 3 步,直到 right 到达序列的尽头。思路其实很简单:第原创 2021-08-25 17:01:29 · 231 阅读 · 0 评论