双指针
C-Liueasymoney
这个作者很懒,什么都没留下…
展开
-
【LeetCode刷题笔记Java】142.环形链表2
题目:给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。 说明:不允许修改给定的链表。 进阶: 你是否可以使用 O(1) 空间解决此题? 示例:输入:head = [3,2,0,-4], pos = 1 输出:返回索引为 1 的链表节点 解释:链表中有一个环,其尾部.原创 2021-06-27 15:26:27 · 69 阅读 · 0 评论 -
【LeetCode刷题笔记Java】234.回文链表
题目:请判断一个链表是否为回文链表。 示例:输入: 1->2->2->1 输出: true 快慢指针+反转链表 public boolean isPalindrome(ListNode head){ if (head == null || head.next == null) return true; // len保存链表长度O(N) int len = 0; ListNode tem.原创 2021-06-24 17:36:36 · 97 阅读 · 0 评论 -
【LeetCode刷题笔记】75.颜色分类
题目:给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 示例:输入:nums = [2,0,2,1,1,0] 输出:[0,0,1,1,2,2] 双指针 由于只要排序三个数字0、1、2,那么我们最终是要把0放在最左边,2放在最右边(假设0、2都存在) 那么就设置两个指针分别指向数组的首位和末尾,这两个指针的作用是用来当遍历到数组中元素等于0或者2的时候.原创 2021-06-19 14:51:16 · 114 阅读 · 0 评论 -
【LeetCode刷题笔记】19.删除链表的倒数第N个节点
题目:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 进阶:你能尝试使用一趟扫描实现吗? 示例:输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 双指针(快慢指针) public ListNode removeNthFromEnd(ListNode head, int n){ // 设置两个快慢指针 ListNode first; ListNode last; // 设置前.原创 2021-06-07 23:38:43 · 111 阅读 · 0 评论 -
【LeetCode刷题笔记】15.三数之和
题目:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 示例:输入:nums = [-1,0,1,2,-1,-4] 输出:[[-1,-1,2],[-1,0,1]] public List<List<Integer>> threeSum(int[] nums){ List<List<I.原创 2021-06-07 18:36:52 · 106 阅读 · 0 评论