双指针

A collection of 10 posts
链表

环形链表 II

给定一个链表的头节点 head,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置,索引从 0 开始。 如果 pos 是 -1,则在该链表中没有环。 注意: * pos 不作为参数进行传递。 * pos 仅仅是为了标识链表的实际情况。 * 不允许修改链表。 示例 1: 输入:head = [3,2,0,-4], pos = 1 输出:返回索引为 1 的链表节点 解释:链表中有一个环,其尾部连接到第二个节点。 示例 2: 输入:head
7 min read
链表

环形链表

给你一个链表的头节点 head,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置,索引从 0 开始。 注意: * pos 不作为参数进行传递。 * pos 仅仅是为了标识链表的实际情况。 如果链表中存在环,则返回 true。 否则,返回 false。 示例 1: 输入:head = [3,2,0,-4], pos = 1 输出:true 解释:链表中有一个环,其尾部连接到第二个节点。 示例 2: 输入:head = [1,2], pos = 0 输出:
7 min read
链表

相交链表

给你两个单链表的头节点 headA 和 headB。 请你找出并返回两个单链表相交的起始节点。 如果两个链表不存在相交节点,返回 null。 题目数据保证整个链式结构中不存在环。 注意: * 函数返回结果后,链表必须保持其原始结构。 * 链表相交指的是两个链表从某个节点开始,后续节点在内存中是同一批节点。 * 不能只比较节点值是否相等,必须比较节点本身是否相同。 自定义评测中会使用: * intersectVal:相交的起始节点的值。如果不存在相交节点,这一值为 0 * listA:第一个链表 * listB:第二个链表 * skipA:在 listA 中从头节点开始跳到交叉节点的节点数 * skipB:在 listB 中从头节点开始跳到交叉节点的节点数 评测系统会根据这些输入创建链式数据结构,并将两个头节点 headA 和 headB 传递给程序。 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,
9 min read
双指针

盛最多水的容器

盛最多水的容器 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 **说明:**你不能倾斜容器。 示例 1: 输入:[1,8,6,2,5,4,8,3,7] 输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,
4 min read