链表
种子选手席同学
这个作者很懒,什么都没留下…
展开
-
[剑指offer] 二叉搜索树与双向链表
题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 解题思路 题目可能比较难理解,可以看如下的图,我们有一棵二叉搜索树,要求得右边的双向链表。 在二叉搜索树中,左子结点的值总是小于父结点的值,右子节点的值总是大于父结点的值。因此我们在转换成排序双向链表时,原先指向左子结点的指针调整为链表中指向前一个结点的指针,原先指向右子...原创 2019-03-04 22:16:32 · 130 阅读 · 0 评论 -
[剑指offer] 链表中倒数第k个结点
题目描述 输入一个链表,输出该链表中倒数第k个结点。 解题思路 经典的双指针法。定义两个指针,第一个指针从链表的头指针开始遍历向前走k-1步,第二个指针保持不动,从第k步开始,第二个指针也开始从链表的头指针开始遍历,由于两个指针的距离保持在k-1,当第一个指针到达链表的尾节点时,第二个指针刚好指向倒数第k个节点。 关注要点 链表头指针是否为空,若为空则直接返回回null k是否为0,k为0也就...原创 2019-03-02 15:43:35 · 149 阅读 · 0 评论 -
707. 设计链表 leetcode
设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。 在链表类中实现这些功能: get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。 ...原创 2019-01-08 19:52:02 · 292 阅读 · 2 评论 -
[剑指offer] 反转链表
题目描述 输入一个链表,反转链表后,输出新链表的表头。 解题思路 设置三个指针,head为当前节点,pre为当前节点的前一个节点,next为当前节点的下一个节点,需要pre和next的目的是让当前节点从pre->head->next1->next2变成pre<-head next1->next2的过程中,用pre让节点反转所指方向,next节点保存next1节点防止链...原创 2019-03-02 16:37:50 · 85 阅读 · 0 评论 -
[剑指offer] 合并两个排序的链表
题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 解题思路 两种解法:递归和非递归 参考代码 /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ /...原创 2019-03-02 17:00:37 · 80 阅读 · 0 评论 -
[剑指offer] 复杂链表的复制
题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 解题思路 参考代码 /* public class RandomListNode { int label; RandomListNode next = nu...原创 2019-03-04 16:40:36 · 111 阅读 · 0 评论 -
83. 删除排序链表中的重复元素 引用问题解答
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例 1: 输入: 1-&amp;amp;amp;gt;1-&amp;amp;amp;gt;2 输出: 1-&amp;amp;amp;gt;2 示例 2: 输入: 1-&amp;amp;amp;gt;1-&amp;amp;amp;gt;2-&amp;amp;amp;gt;3-&amp;amp;amp;gt;3 输出: 1-&a原创 2019-01-07 19:23:37 · 152 阅读 · 0 评论