链表
文章平均质量分 57
LFJ17
Fighting
展开
-
lintcode——在O(1)时间复杂度删除链表节点
1.问题 给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。 给定 1->2->3->4,和节点 3,删除 3 之后,链表应该变为 1->2->4 2.思路 这是我在lintcod上做的第一道题,soeasy(只是做完了之后是这感觉:) )本来想的挺麻烦的,就觉得还不是得遍历吗,可时间复杂原创 2017-03-26 23:19:06 · 430 阅读 · 0 评论 -
lintcode——链表总结
在链表这组题目中,很多题目是有很多相同点的,我从一开始没有一点头绪,最后慢慢有了思路也知道该怎么进行操作,开心~~~~~比如,返回倒数第n个节点的值和删除倒数第n个节点基本是一样的,这道题目在找倒数第n个节点的前一个时非常巧妙,一前一后的指针前进,利用两个指针的中间差值找到倒数第n个,我觉得特别有意思~~~ 做题的过程中也和同学交流了很多,其实一个题目有很多做法都可以通过,我觉得在原创 2017-03-30 00:04:58 · 677 阅读 · 0 评论 -
lintcode——合并两个排序链表
1.题目 将两个排序链表合并为一个新的排序链表 给出 1->3->8->11->15->null,2->null, 返回 1->2->3->8->11->15->null。 2.思路 新建一个链表,对给定的两个链表从头遍历并比较大小,每次将较小( 3.代码 /** * Definition of ListNode * class ListNode原创 2017-03-29 23:21:37 · 793 阅读 · 0 评论 -
lintcode——删除排序链表中的重复元素
1.题目 给定一个排序链表,删除所有重复的元素每个元素只留下一个。 给出 1->1->2->null,返回 1->2->null 给出 1->1->2->3->3->null,返回 1->2->3->null 2.思路 删除重复元素的思路和之前所有的删除都是一样的。 链表为空直接返回。当链表不为空时从头开始遍历,当遍历到某值原创 2017-03-29 00:11:18 · 264 阅读 · 0 评论 -
lintcode——链表插入排序
1.题目 用插入排序对链表排序 Given 1->3->2->0->null, return 0->1->2->3->null 2.思路 第一遍循环时不进行while循环,开始将原链表头节点断开尾插到新建链表中,原链表头指针下移到第二个元素。 从第二遍循环开始,将新旧链表中元素开始比较大小 ①若旧链表中现在的头节点值小于新链表原创 2017-03-29 00:08:47 · 443 阅读 · 0 评论 -
lintcode——链表求和
1.题目 你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。 给出两个链表 3->1->5->null 和 5->9->2->null,返回 8->0->8->null 2.思路 考虑如何实现进位、和数的每一位如何得到、当链表l1与l2不一样长原创 2017-03-28 23:37:20 · 441 阅读 · 0 评论 -
lintcode——链表划分
1.题目 给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前。 你应该保留两部分内链表节点原有的相对顺序。 给定链表 1->4->3->2->5->2->null,并且 x=3 返回 1->2->2->4->3->5->null 2.思路思路 新建两个链表,对两个新链表尾插。在旧链表里从头开始遍历,当遍历到原创 2017-03-26 23:51:27 · 457 阅读 · 0 评论 -
lintcode——删除链表中的元素
1.题目 删除链表中等于给定值val的所有节点。 给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1->2->4->5。 2.思路 这个题的删除和用O(1)复杂度删除节点是一样的。首先重新接入一个新的节点,然后让旧头结点head依次下移查找其下个的值是否等于val,如果等于val则用下下个覆盖下个,这样就完成原创 2017-03-26 23:46:18 · 328 阅读 · 0 评论 -
lintcode——链表倒数第n个节点
1.题目 找到单链表倒数第n个节点,保证链表中节点的最少数量为n。 给出链表 3->2->1->5->null和n = 2,返回倒数第二个节点的值1. 2.思路: 这道题和上一道删除倒数第n个节点一模一样啊~~ 注意:返回值的时候只需要返回指针(别人告诉我是因为定义类的时候带了* 号 ——!) 思路是复制过来的 :) 头指针处第一原创 2017-03-26 23:37:03 · 375 阅读 · 0 评论 -
lintcode——删除链表中倒数第n个节点
1.题目 给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。 给出链表1->2->3->4->5->null和 n = 2. 删除倒数第二个节点之后,这个链表将变成1->2->3->5->null. 2.思路 这道题的关键就在于如何找到倒数第n个节点的前一个节点!创建两个指针放在头指针处,第一个指针fast下移n-1次后开始判断链表是否只有n原创 2017-03-26 23:31:37 · 320 阅读 · 0 评论 -
lintcode——两两交换链表中的节点
1.题目 给一个链表,两两交换其中的节点,然后返回交换后的链表。 给出 1->2->3->4, 你应该返回的链表是 2->1->4->3。 2.思路 一开始看到这个题就在纠结到底是两两交换节点还是只交换值,因为觉得交换值更简单就直接上手了。 首先考虑判断空链表;然后考虑链表非空的情况,因为要两两交换值,不能忘了判断head->next非空,对每原创 2017-03-26 23:30:44 · 528 阅读 · 0 评论 -
lintcode——翻转链表
1.题目 给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null 2.思路 利用头插法。新建一个链表,把现有链表中节点依次头插到新链表中,每一次头插前,T作为旧链表中临时的一个头。在新链表中,每一次dummy=head代表dummy从尾依次走到头,最后返回dummy时,整个链表就是原来链表的逆序。 3.代码 /**原创 2017-03-26 23:41:45 · 248 阅读 · 0 评论