双指针
失业边缘,疯狂挣扎
这个作者很懒,什么都没留下…
展开
-
!42. 接雨水(Java)(单调栈)(动态规划,左缀max,右缀max)(双指针)
1 题目给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 62 Java2.1 方法一(单调栈,按行求)当两个较高元素中间夹一个或几个较低元素,此时可存水,即“凹陷部分”class Solution原创 2020-05-11 17:10:36 · 248 阅读 · 0 评论 -
19. 删除链表的倒数第N个节点(Java)(快慢指针)
1 题目给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?来源:力扣(LeetCode)链接:https://leetcode-c...原创 2020-05-04 19:39:13 · 175 阅读 · 0 评论 -
148. 排序链表(Java)(归并排序链表)
1 题目在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5来源:力扣(LeetCode)链接:https://leetcode...原创 2020-04-25 17:03:29 · 196 阅读 · 0 评论 -
面试题25. 合并两个排序的链表(21. 合并两个有序链表)(Java)(迭代,双指针,原地连接)(迭代,双指针,新链表)(减治递归)
1 题目2 Java2.1 方法一(迭代)注意需要返回第一个head所以ListNode head = new ListNode(-1);ListNode l = head;这样l在往后遍历的时候,head一直保存着头结点(实际是head.next)/** * Definition for singly-linked list. * public class ListNode ...原创 2020-03-02 17:35:45 · 176 阅读 · 0 评论 -
专题:链表双指针问题(快慢指针、相遇指针)
1 获取倒数第k个元素1.1 题目面试题22. 链表中倒数第k个节点https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof1.2 快慢指针/** * Definition for singly-linked list. * public class ListNode { * ...原创 2020-04-24 17:06:14 · 488 阅读 · 0 评论 -
141. 环形链表(Java)(HashSet查重)(相遇指针)
1 题目给定一个链表,判断链表中是否有环https://leetcode-cn.com/problems/linked-list-cycle/2 Java2.1 方法一(HashSet查重)/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next;...原创 2020-04-24 14:00:39 · 230 阅读 · 0 评论 -
15. 三数之和(Java)(三指针,滑动窗口)
1 题目给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]来源:力扣(LeetCo...原创 2020-04-03 17:36:19 · 249 阅读 · 0 评论 -
面试题21. 调整数组顺序使奇数位于偶数前面(Java)(相遇指针)(双指针)
1 题目输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。示例:输入:nums = [1,2,3,4]输出:[1,3,2,4]注:[3,1,2,4] 也是正确的答案之一。提示:1 <= nums.length <= 500001 <= nums[i] <= 10000来源:力扣(LeetCo...原创 2020-03-27 15:36:07 · 103 阅读 · 0 评论 -
面试题57. 和为s的两个数字(167. 两数之和 II - 输入有序数组)(Java)(相遇指针滑动窗口)(HashSet数组查找)
1 题目输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。示例 1:输入:nums = [2,7,11,15], target = 9输出:[2,7] 或者 [7,2]示例 2:输入:nums = [10,26,30,31,47,60], target = 40输出:[10,30] 或者 [30,10]限制:...原创 2020-03-24 18:03:36 · 99 阅读 · 0 评论 -
面试题52. 两个链表的第一个公共节点(Java)(HashSet查重)(双指针,拼接链表,思维)
1 题目输入两个链表,找出它们的第一个公共节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注...原创 2020-03-23 12:59:04 · 170 阅读 · 0 评论 -
面试题57 - II. 和为s的连续正数序列(Java)(快慢指针,滑动窗口)(数组链表)
1 题目输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。示例 1:输入:target = 9输出:[[2,3,4],[4,5]]示例 2:输入:target = 15输出:[[1,2,3,4,5],[4,5,6],[7,8]]限制:1 <= target <=...原创 2020-03-06 14:42:34 · 115 阅读 · 0 评论 -
349. 两个数组的交集(Java;阿里云面试题)(HashSet)(set1.retainAll(set2))
1 题目给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [9,4]说明:输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。来源:力扣(LeetCode)链接:https:/...原创 2020-03-01 17:17:02 · 449 阅读 · 0 评论 -
面试题22. 链表中倒数第k个节点(Java)(双指针,快慢指针)
1 题目输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.来源:力扣(LeetCode)...原创 2020-02-26 21:52:06 · 135 阅读 · 0 评论