![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
链表
荒野求思
人生就像写代码,总有bug出现
展开
-
第十一题:判断一个链表是否为回文结构(Java实现)
题目:给定一个链表的头结点是head,请判断该链表是否为回文结构例如:1->2->1,返回true1->2->2->1,返回true1->2->3,返回false分析:在链表问题中,时间复杂度一般都是O(n)的,所以链表的优化一般在空间复杂度上的优化,在笔试和面试中,面对链表的问题,我们的策略是不一样的,如果是在笔试中,不用...原创 2019-01-10 22:09:51 · 1916 阅读 · 1 评论 -
第三题:翻转单向链表
题目要求:如果链表的长度为N,要求时间复杂度为O(N),额外空间复杂度为O(1)代码实现与分析: package com.isea.brush;/** * 翻转单向链表? * 要求:如果链表的长度为N,要求时间复杂度为O(N),额外空间复杂度为O(1) * 解题思路: * head: 表示当前链表的头结点 * pre: 表示头节点的前一个节点 * cur: 表示当前节...原创 2019-01-07 19:40:04 · 203 阅读 · 0 评论 -
第八题:翻转双向链表
题目:翻转双向链表,时间复杂度为O(N),额外空间复杂度我O(1)。代码实现与分析:package com.isea.brush;/** * 反转双向链表 */public class ReverseDoubleList { private static class DNode { private int data; private ...原创 2019-01-09 23:16:34 · 252 阅读 · 0 评论 -
第二十题:链表的荷兰国旗问题(Java)
题目要求将一个链表,按照某一个标准,小于该标准的放置在链表的前面,等于的放置在中间,大于的放置在后面,不要求稳定性。实现思路:在前面第十五题:荷兰国旗问题中,我们已经解决了类似的问题,我们实现的思路是,遍历整个链表,然后将每一个节点放置到数组中去,然后使用荷兰国旗问题的思路来解决,在数组荷兰国旗话之后,在遍历数组,将数组转为链表,在笔试中,我们应该使用这样的解决方案。代码实现:...原创 2019-01-15 21:18:10 · 424 阅读 · 0 评论 -
第二十一题:实现对一个带有随机指针的链表的拷贝(Java)
题目要求:一个链表除了带有next指针指向下一个元素之外,还有另外一个指针rand,该指针随机指向链表中的任意一个节点,现在要求对这个链表进行深度的拷贝,返回拷贝了之后的链表的头结点。思路分析与代码实现: package com.isea.brush;import java.util.HashMap;/** * 实现对一个带有随机节点的链表的拷贝 * 准备一个辅助的映...原创 2019-01-16 09:28:42 · 264 阅读 · 0 评论