双指针
每天学一点!
时刻保持对知识的热情!
展开
-
238. 除自身以外数组的乘积
题目描述给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例输入: [1,2,3,4]输出: [24,12,8,6]说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。进阶:你可以在常数空间复杂度内完成这个题目吗?( 出于对空...原创 2019-11-29 20:18:01 · 110 阅读 · 0 评论 -
234. 回文链表
题目描述请判断一个链表是否为回文链表。示例输入: 1->2->2->1输出: true思路因为进阶要求空间复杂度为O(1),时间复杂度为O(n),则不能用栈。用两个指针,一个快指针(走两步),一个慢指针(走一步)。当快指针走到末尾的时候,慢指针的位置就是中间位置,然后原地翻转后序链表。在遍历比较即可。代码/** * D...原创 2019-09-11 18:33:59 · 82 阅读 · 0 评论 -
33. 搜索旋转排序数组
题目描述假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,1,2,4,5,6,7]可能变为[4,5,6,7,0,1,2])。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回-1。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是O(logn) 级别。示例 1:输入: nums = [ 4, 5, 6, 7, 0...原创 2019-05-17 21:24:09 · 120 阅读 · 0 评论 -
16. 最接近的三数之和
题目描述给定一个包括n个整数的数组nums和 一个目标值target。找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).思路和三数之和思...原创 2019-05-15 20:51:24 · 117 阅读 · 0 评论 -
15. 三数之和
题目描述给定一个包含n个整数的数组nums,判断nums中是否存在三个元素a,b,c ,使得a + b + c =0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]...原创 2019-02-06 20:30:45 · 141 阅读 · 0 评论 -
11. 盛最多水的容器
题目描述给定n个非负整数a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画n条垂直线,垂直线i的两个端点分别为(i,ai) 和 (i, 0)。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且n的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器...原创 2019-02-06 19:11:22 · 132 阅读 · 0 评论 -
链表中环的入口结点
题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。思路设置两个指针,一个快指针(走两步),一个慢指针(走一步)。如果能相遇则说明有环。判断有环后如果找到入口结点:让慢指针回到头结点,两个指针同时走(都走一步),相等时即为入口结点。代码/*struct ListNode { int val; struct Lis...原创 2019-04-03 18:54:44 · 112 阅读 · 0 评论 -
和为S的两个数字
题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。对应每个测试案例,输出两个数,小的先输出。思路假设:若b>a,且存在, a + b = s; (a - m ) + (b + m) = s 则:(a - m )(b + m)=ab - (...原创 2019-04-08 19:19:16 · 115 阅读 · 0 评论 -
链表中倒数第k个结点
题目描述输入一个链表,输出该链表中倒数第k个结点。思路1走两次。第一次确定链表长度listLength,第二次走listLength-k步。具体思路可以参考我另外一篇博文:https://blog.csdn.net/songsong2017/article/details/86747833思路1的代码/*struct ListNode { int va...原创 2019-02-27 19:41:59 · 99 阅读 · 0 评论 -
和为S的连续正数序列
题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出所有和为S的连续正数序列。序列内按照...原创 2019-04-29 17:31:02 · 81 阅读 · 0 评论 -
26.删除排序数组中的重复项
题目描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1 2你不需要考虑数组中超出新长度后面的元素。为什么...原创 2018-11-15 20:27:55 · 142 阅读 · 0 评论 -
leetcode109. 有序链表转换二叉搜索树
题目描述给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。示例给定的有序链表: [-10, -3, 0, 5, 9],一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 0 / ...原创 2019-08-12 15:14:22 · 330 阅读 · 0 评论 -
19. 删除链表的倒数第k个节点
题目描述给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的n保证是有效的。进阶:你能尝试使用一趟扫描实现吗?思路1先从头走一遍,得到链表长度...原创 2019-05-16 22:21:21 · 155 阅读 · 0 评论 -
leetcode922. 按奇偶排序数组 II
题目描述给定一个非负整数数组A, A 中一半整数是奇数,一半整数是偶数。对数组进行排序,以便当A[i] 为奇数时,i也是奇数;当A[i]为偶数时, i 也是偶数。你可以返回任何满足上述条件的数组作为答案。示例输入:[4,2,5,7]输出:[4,5,2,7]解释:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。提示:2 ...原创 2019-08-19 18:50:04 · 85 阅读 · 0 评论 -
86. 分隔链表
题目描述给定一个链表和一个特定值x,对链表进行分隔,使得所有小于x的节点都在大于或等于x的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5思路创建两个链表,链表min表...原创 2019-07-29 08:40:36 · 86 阅读 · 0 评论 -
3. 无重复字符的最长子串
题目描述给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例示例1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 abc,所以其长度为3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 b,所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释:...原创 2019-01-25 18:40:53 · 136 阅读 · 0 评论