![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
双指针
bella_better
这个作者很懒,什么都没留下…
展开
-
leetcode刷题之双指针——长度最小的子数组【CSDN博客】
错误思路,单层循环不能卡住真正少的大于s的数,只能不断累加 class Solution { public int minSubArrayLen(int s, int[] nums) { int[] rec = new int [100000]; int i; int min=10; for(i = 0;i<nums.length;i++){ rec[i] = 1; }原创 2020-09-28 11:10:12 · 152 阅读 · 0 评论 -
leetcode刷题双指针——最大连续为1的数【csdn博客】
题目 给定一个二进制数组, 计算其中最大连续1的个数。 例如: 输入: [1,0,1,1,0,1] 输出: 2 解释: 中间最大连续1的个数是 2. 思路 清晰简单的思路:创造一个空间记录数据来记载每一位上累加为1的情况,最后再用一个循环比较大小。 这种记录数组当前遍历情况的数组很常用;因为如果单使用一个空间来记录,会有重写的情况,无法更清晰的找到最大值。 代码 class Solution { public int findMaxConsecutiveOnes(int[] nums) {原创 2020-09-27 14:25:42 · 102 阅读 · 0 评论 -
leetcode刷题之双指针技巧——移除数组元素【CSDN博客】
双指针 技巧: 使用两个不同步的指针解决问题, 一个快指针一个慢指针, 两个指针方向相同,移除数组中元素; 移除元素 你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间。 例如nums = [0,1,2,2,3,5], val = 2,函数应该返回新的长度 4, 并且 nums 中的前五个元素为 0, 1, 3, 5;这五个元素可为任意顺序;不需要考虑数组中超出新长度后面的元素。 思路 不能直接就把后面一位的数据补充上去原创 2020-09-26 22:38:42 · 118 阅读 · 0 评论 -
leetcode刷题——双指针之数组拆分【CSDN博客】
@leetcode–数组拆分 I 题目 给定长度为 2n 的数组, 任务是将这些数分成 n 对(每组两个), 例如 (a1, b1), (a2, b2), …, (an, bn) ,使得从1 到 n 的 min(ai, bi) 总和最大,求最大值。 示例 输入: [1,4,3,2] 输出: 4 最大总和为 4 = min(1, 2) + min(3, 4) 思路 先用数学的思维,观察数据,想到如果max最大,就要让两两组合之后取最小的过程中损失最小,于是就要知道a-b最小的情况就是两者最为接近,于是想到先排原创 2020-09-23 13:35:52 · 173 阅读 · 0 评论 -
Leetcode刷题之双指针——反转字符串【CSDN博客】
@leetcode反转字符串 题目 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 示例 输入:[“a”,“b”,“c”,“c”,“d”] 输出:[“d”,“c”,“c”,“b”,“a”] 思路 双指针,一个从头开始,一个从尾开始,双向同时遍历,一直到碰到对方为止。 原本我想到要区分奇数和偶数,但是其实仔细想就会明白,只要限定while(i<j) ,即可;原创 2020-09-10 10:33:07 · 113 阅读 · 0 评论