给定两个有序单链表的头节点head1 和 head2 ,请合并两个有序链表,合并后的链表依然有序,并返回合并后链表的头节点 假设两个链表长度为M和N 直接给出时间复杂度为(M+N) 额外空间复杂度O(1) 1 如果两个链表中一个为空 则无需合并 返回另一个的链表头节点 2 比较head1 和 hea ...
分类:
编程语言 时间:
2017-09-11 21:05:30
阅读次数:
142
给定一个无序单链表的头节点head,实现单链表的选择排序 要求额外空间复杂度O(1) 思路: 既然额外空间复杂度O(1),就不能把链表装进容器,排好序后再从新链接,而是要求面试者在原链表上利用有限几个变量完成选择排序的过程。 选择排序是从未排序的部分找到最小值,然后放到排好序部分的尾部。 1 开始时 ...
分类:
编程语言 时间:
2017-09-11 16:22:00
阅读次数:
114
单链表,可能有环,也可能无环。给定两个单链表的头节点head1 和 head2 这两个链表可能交也可能不交。实现函数,如果相交,请返回相交的第一个节点,不交返回null 这道题目需要分析的情况非常 本题拆分长三个子问题,每一个子问题都可以作为一道独立的算法题。 问题一、 如何判断有环 有则返回第一个 ...
分类:
编程语言 时间:
2017-09-10 21:40:00
阅读次数:
206
假设链表中每一个节点的值都在0~9之间,那么链表整体就可以代表一个整数 给定两个链表的头节点head1和head2,请生成代表两个整数相加值的结果链表 传统做法 先把链表生成 整数 然后相加 这样的有个溢出问题 介绍一种做法: 利用栈结构求解: 1、 将两个链表分别从左到右遍历,遍历过程中将值压栈, ...
分类:
编程语言 时间:
2017-09-10 16:41:26
阅读次数:
160
给定一个链表的头节点head,判断是否是回文结构 1->2->1 返回true 进阶: 如果链表长度N,时间复杂度O(N) 额外空间O(1) 方法一 利用栈结构(需要额外空间) 从左到右遍历,一次压栈。 这样的到的 从栈顶到栈底的节点值出现顺序会与原链表从左到右的值出现顺序相反。 废话不多说,上代码 ...
分类:
编程语言 时间:
2017-09-10 12:27:15
阅读次数:
164
给定单链表的表头节点head, 以及两个整数from 和 to, 在单向链表上把fro个节点到第to个节点这一部分进行反转 思路: 本题 有可能存在换头的问题,所以函数应该返回调整后的新的头节点 1 判断是否满足 1<=from<=to<=N 如果不满足,直接返回原来的头节点 2 找到第from-1 ...
分类:
编程语言 时间:
2017-09-09 22:38:52
阅读次数:
343
给定链表的表头节点head,实现删除链表的中间节点的函数 推展: 给定链表的头节点,整数a 和 整数 b,实现删除a/b处节点的函数 先来分析原问题, 长度1 直接返回 长度2 将头节点删除 长度3 删除第二个 长度4 删除第二个 长度5 删除第三个。。。。。。长度每增加2 删除的节点就向后移动一个 ...
分类:
编程语言 时间:
2017-09-09 20:14:54
阅读次数:
164
List是一个双向链表,按照插入顺序排序,可以添加一个元素到头部或者尾部。当对一个空key执行插入操作的时候会创建一个新表。 如果要清空列表,则会杀出对应的key空间。 在List中保存了头节点和未节点,以及链表包含的节点数量。所以查询链表中节点数量的复杂度为O(1)。 在List中保存的每个节点都 ...
分类:
其他好文 时间:
2017-09-07 21:28:49
阅读次数:
134
单链表,线性表的链式存储结构,逻辑相邻,物理位置不相邻 描述如下 数据域data存储数据,指针域 next 使得链表逻辑相邻; 头指针L指向链表表头,包含头节点链表的表头是一个空数据域节点,不包含表头链表表头即是第一个元素。 单链表的插入分为两种形式,栈式插入(先进链表的在最后面)队列式插入(先进链 ...
分类:
其他好文 时间:
2017-08-24 22:39:52
阅读次数:
156
关于链表的题, 画图看看需要那几个节点, 一般都是接头节点(用作标记) 和遍历节点, 遍历的时候要判空, head.next != null 前一定要判head != null, 将尾节点置为空! ...
分类:
其他好文 时间:
2017-08-19 17:14:39
阅读次数:
212