Medium! 题目描述: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗? 解题思路: 这道题让我们移除链表倒数第N个节点,限定n一定是有效的,即n不会大于链表中的元素总数。还有题目要求我们一次遍历 ...
分类:
其他好文 时间:
2018-06-03 12:21:55
阅读次数:
118
1.集合类:list和Set比较,各自的子类比较(Arraylist,Vector,inkedLIst,HashSet,TreeSet) List:存入元素有序,元素可以重复,允许null值得存在,主要有3个实现类 linkedLIst:底层是双向链表,每一个结点都有指向前一个和后一个结点的指针。由 ...
分类:
编程语言 时间:
2018-05-30 11:05:03
阅读次数:
258
141题:判断链表是不是存在环! 142 给定一个链表,返回链表环开始的地方,如果没有环,就返回空。 思路:链表头结点到链表环开始的地方的步数和两个链表相遇的地方到链表开始的地方的步数是一样多的! ...
分类:
其他好文 时间:
2018-05-29 01:36:42
阅读次数:
99
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗? 因为链表的节点只有next指针,并且我们的题目要求只能扫描一次就完成删除,所以我们不能简单的创建一个数组来解决问题,所以我们可以这样来: (1)删除倒 ...
分类:
其他好文 时间:
2018-05-26 12:21:11
阅读次数:
190
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗? 该题目的要求是只需要扫描一次就可以实现,那么我们就不可能去创建一个数组来解决该问题,因为把链表元素全部放进数组就要扫描一次,而把删除后的数组放入链表又 ...
分类:
其他好文 时间:
2018-05-24 23:05:35
阅读次数:
216
题目描述 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗? 给定一个链表,删 ...
分类:
其他好文 时间:
2018-05-24 19:33:24
阅读次数:
143
链表翻转,简单地理解,就是将链表的头部结点变为链表的尾部结点,与此同时将原链表的尾部结点变成头部结点。如下图所示: 图 1 链表翻转示意图 提示:H 为头指针,图示中的链表无头结点,头指针直接指向首元结点。 将链表进行翻转的方法有多种,本节给大家介绍两种实现方法。 方法一 实现链表翻转最直接的方法就 ...
分类:
其他好文 时间:
2018-05-23 11:56:51
阅读次数:
207
新建一个头结点,方便算法实现。和数组删除给定值类似,不删除节点,不改变指针,而是覆盖节点值。通过覆盖节点值来达到压缩链表,实现删除给定值。 一个前指针指向覆盖节点前驱,一个后指针扫描链表。扫到非指定值,则将其赋给前指针的后继,扫到指定值,则仅仅移动后指针,继续扫描直到扫描完整个链表。 扫完之后,将前 ...
分类:
其他好文 时间:
2018-05-22 20:39:24
阅读次数:
137
package main import "fmt" //定义节点 type Node struct { Data int Next *Node } /* * 返回第一个节点 * h 头结点 */ func GetFirst(h *Node) *Node { if h.Next == nil { re... ...
分类:
编程语言 时间:
2018-05-20 13:08:44
阅读次数:
170
一、双链表结构 最近总会抽出一些零碎的时间片段,尝试按照自己的想法自定一了一个双链表结构的集合。我发现,数组、单链表或者双链表,乃至其他结构,本质上就是一种思想。数组和单链表就不多说了,前几篇也尝试自定义了,就双链表来说,就可以定义如下几种结构: (1)头结点+...数据结点.....+尾结点 (2 ...
分类:
其他好文 时间:
2018-05-17 19:52:08
阅读次数:
178