链表
Charles.zhang
朝闻道,夕死可矣。路漫漫其修远兮,吾将上下而求索。
展开
-
lintcode练习-103. 带环链表 II
103. 带环链表 II 给定一个链表,如果链表中存在环,则返回到链表中环的起始节点,如果没有环,返回null。 样例 给出 -21->10->4->5, tail connects to node index 1,返回10 挑战 不使用额外的空间 解题思路: 1、定义一个快慢指针, 2、如果链表无环,那么fast一定会遇到终点,返回none。 3、如果链表有环...原创 2018-08-17 08:32:13 · 223 阅读 · 0 评论 -
lintcode练习- 1292. Odd Even Linked List
1292. Odd Even Linked List Given a singly linked list, group all odd nodes together followed by the even nodes. Please note here we are talking about the node number and not the value in the nodes. ...原创 2018-08-17 08:10:03 · 160 阅读 · 0 评论 -
lintcode练习 - 904. 加一链表
904. 加一链表 给定一个非负整数,这个整数表示为一个非空的单链表,每个节点表示这个整数的一位。返回这个整数加一。 除了0本身,所有数字在最高位前都没有0。 列表的头节点存的是这个整数的最高位。 样例 给出链表1 -> 2 -> 3 -> null,返回 1 -> 2 -> 4 -> null。 实现思路: 用数组和用链表两种方法 当使用链表时...原创 2018-08-16 20:30:45 · 239 阅读 · 0 评论 -
lintcode练习- 511. 交换链表当中两个节点
511. 交换链表当中两个节点 给你一个链表以及两个权值v1和v2,交换链表中权值为v1和v2的这两个节点。保证链表中节点权值各不相同,如果没有找到对应节点,那么什么也不用做。 样例 给出链表 1->2->3->4->null ,以及 v1 = 2 , v2 = 4 返回结果 1->4->3->2->null。 注意事项 你需要交换两个节点...原创 2018-08-16 17:53:36 · 426 阅读 · 0 评论 -
lintcode练习-380. 两个链表的交叉
380. 两个链表的交叉 请写一个程序,找到两个单链表最开始的交叉节点。 样例 下列两个链表: A: a1 → a2 ↘ c1 → c2 → c3 ↗ B: b1 → b2 → b3 在节点 c1 开始交叉。 挑战 ...原创 2018-08-16 16:38:35 · 237 阅读 · 0 评论 -
lintcode练习-378. 将二叉查找树转换成双链表
378. 将二叉查找树转换成双链表 将一个二叉查找树按照中序遍历转换成双向链表。 样例 给定一个二叉查找树: 4 / \ 2 5 / \ 1 3 返回 1<->2<->3<->4<->5。 实现思路: 两个方法,一个是利用数组保存二叉树中序遍历的结果,然后转换成双向链表。 第二个方法:因为双向链表的...原创 2018-08-16 15:47:23 · 802 阅读 · 0 评论 -
lintcode练习-223. 回文链表
223. 回文链表 设计一种方式检查一个链表是否为回文链表。 样例 1->2->1 就是一个回文链表。 挑战 O(n)的时间和O(1)的额外空间。 实现思路: 思路一:利用链表进行判断 #使用链表进行判断 class Solution: """ @param head: A ListNode. @return: A boolean. "...原创 2018-08-16 07:44:27 · 161 阅读 · 0 评论 -
lintcode练习-221. 链表求和 II
221. 链表求和 II 假定用一个链表表示两个数,其中每个节点仅包含一个数字。假设这两个数的数字顺序排列,请设计一种方法将两个数相加,并将其结果表现为链表的形式。 样例 给出 6->1->7 + 2->9->5。即,617 + 295。 返回 9->1->2。即,912 。 实现思路: 求出两个链表所代表的数字的和,然后将和转换成链表 """ ...原创 2018-08-16 07:44:15 · 275 阅读 · 0 评论 -
lintcode练习-170. 旋转链表
170. 旋转链表 给定一个链表,旋转链表,使得每个节点向右移动k个位置,其中k是一个非负数 样例 给出链表1->2->3->4->5->null和k=2 返回4->5->1->2->3->null 实现思路: 定义两个指针left和right,然后求出结点的真实移动位置,移动的部分放在left中,未移动的部分放在right中...原创 2018-08-16 07:44:05 · 250 阅读 · 0 评论 -
lintcode练习-113. 删除排序链表中的重复数字 II
113. 删除排序链表中的重复数字 II 给定一个排序链表,删除所有重复的元素只留下原链表中没有重复的元素。 样例 给出 1->2->3->3->4->4->5->null,返回 1->2->5->null 给出 1->1->1->2->3->null,返回 2->3-&原创 2018-08-16 07:43:44 · 246 阅读 · 0 评论 -
lintcode练习-106. Convert Sorted List to Binary Search Tree
106. Convert Sorted List to Binary Search Tree 给出一个所有元素以升序排序的单链表,将它转换成一棵高度平衡的二分查找树 样例 2 1->2->3 => / \ 1 3 实现思路: 如样例给出的一样,平衡二叉树要左右对齐,所以我们可以以中心结点为根结点,...原创 2018-08-16 07:43:34 · 182 阅读 · 0 评论 -
lintcode练习-105. 复制带随机指针的链表
105. 复制带随机指针的链表 给出一个链表,每个节点包含一个额外增加的随机指针可以指向链表中的任何节点或空的节点。 返回一个深拷贝的链表。 挑战 可否使用O(1)的空间 实现代码: 一个经典题目,思想就是在复制每个原节点链接其后,然后依次添加新节点的random指针。 利用递归可以做到o(1)的空间复杂度 """ Definition for singly-linked li...原创 2018-08-15 17:58:13 · 220 阅读 · 0 评论 -
lintcode练习-102. 带环链表
102. 带环链表 给定一个链表,判断它是否有环。 样例 给出 -21->10->4->5, tail connects to node index 1,返回 true 挑战 不要使用额外的空间 实现代码: 思路: 快慢指针的典型应用,使用快指针 fast 与慢指针 slow,slow每次后移一位,fast 每次后移两位,当fast 与 slow 指向同一节点时,...原创 2018-08-15 11:23:43 · 196 阅读 · 0 评论 -
lintcode练习-450. K组翻转链表
450. K组翻转链表 给你一个链表以及一个k,将这个链表从头指针开始每k个翻转一下。 链表元素个数不是k的倍数,最后剩余的不用翻转。 样例 给出链表 1->2->3->4->5 k = 2, 返回 2->1->4->3->5 k = 3, 返回 3->2->1->4->5 解题思路: 1、对链表进行切片,满足条...原创 2018-08-17 10:47:30 · 190 阅读 · 0 评论