
双指针
双指针
低头看天,抬头走路
句句都是正确的废话,招招都是致命的空招。
展开
-
leetcode15.三数之和
题目给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/3sum著作权归领扣网原创 2020-07-22 01:32:42 · 273 阅读 · 0 评论 -
leetcode18.四数之和
题目给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为:[ [-1, 0, 0, 1], [-2, -1, 1, 2], [-2, 0, 0, 2]原创 2020-07-23 00:31:07 · 307 阅读 · 1 评论 -
leetcode16.最接近的三数之和
题目给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。思路数组排序+双指针,参考leetcode15.三数之和实现class Solution {public: int threeSumC原创 2020-07-22 01:34:29 · 278 阅读 · 0 评论 -
leetcode26 删除排序数组中的重复项
删除排序数组中的重复项给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例...原创 2019-08-07 20:41:35 · 126 阅读 · 0 评论 -
leetcode33. 搜索旋转排序数组
题目假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,7,0,1,2], t...原创 2019-07-28 00:03:26 · 116 阅读 · 0 评论 -
leetcode15 三数之和
题目给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]思路时间复杂度为O(N^2)。...原创 2019-07-03 00:33:19 · 207 阅读 · 0 评论 -
leetcode27. 移除元素
题目给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元...原创 2019-07-14 21:31:41 · 91 阅读 · 0 评论 -
剑指offer第8题:旋转数组的最小数字
输入:一个递增序列的一个旋转 输出:旋转数组的最小元素 eg:{3,4,5,1,2}是{1,2,3,4,5}的旋转 思路:双指针法,取中间元素,如果大于第一个指针所指的元素,将该指针指向中间元素,小于第二个指针所指的元素,将第二个指针指向中间元素。最终第一个指针和第二个指针会指向两个相邻的元素,第二个指针所指即为所求public class MinNumber {// 找出旋转数字的最原创 2016-07-31 23:23:15 · 443 阅读 · 0 评论 -
剑指offer第14题:调整数组顺序使奇数位于偶数前面
输入:一个整数数组 输出:使奇数位于偶数前面 思路:用起始两个指针,第一个指针向后移动,第二个指针向前移动,当第一个指针指向偶数第二个指针指向奇数将二者交换,直到两个指针相遇public class ReorderOddEven{// 剑指offer第14题 public void reorderOddEven(int[] array){ int start原创 2016-07-31 23:58:43 · 477 阅读 · 0 评论 -
leetcode240. 搜索二维矩阵 II
题目编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30]]给定 target = 5,返回 true。原创 2020-10-26 22:07:20 · 161 阅读 · 0 评论 -
leetcode141.环形链表
题目给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。进阶:你能用 O(1)(即,常量)内存解决此问题吗?示例 1:输入:head = [3,2,0,-4]原创 2020-10-26 21:10:38 · 93 阅读 · 0 评论 -
leetcode86. 分隔链表
题目给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例:输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5思路设置三个辅助节点1.虚拟头节点vir,方便函数的返回值2.小于x的节点中最靠近x的节点 left,作用是插入下一个小于x的节点3.当前节点的前置节点pre,删除当原创 2020-08-14 00:22:41 · 199 阅读 · 0 评论 -
leetcode80. 删除排序数组中的重复项 II
题目给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定 nums = [1,1,1,2,2,3],函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。你不需要考虑数组中超出新长度后面...原创 2019-08-07 20:50:07 · 146 阅读 · 0 评论 -
leetcode75. 颜色分类
题目给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]思路初始化0的最右边界:p0 = 0。在整个算法执行过程中 nums[idx < p0] = 0.初始化2的最左边界 :p2 = n - 1。在整个算法执行过程中原创 2020-08-12 00:03:08 · 153 阅读 · 0 评论 -
leetcode61. 旋转链表
题目给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4->5->1->2->3->NULL示例 2:输入: 0->1->2-&原创 2020-08-11 22:53:42 · 129 阅读 · 0 评论