LinkList
Lzed
我好菜啊
展开
-
Leetcode 21 - Merge Two Sorted Lists(LinkList)
题意合并两个有序链表思路两个指针分别指向两个链表的头,每次选择较小的一个插入新的链表并且指针后移代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} *原创 2017-03-09 12:36:32 · 226 阅读 · 0 评论 -
Leetcode 23 - Merge k Sorted Lists(K路归并)
题意合并k个有序链表。思路k路归并。算法1维护一个大小为k的堆。维护一个大小为k的小顶堆,开始的时候将这k个链表的头结点扔到堆里面去(如果为null,不扔进去,并且我们维护的堆的大小相应的减小)。每次,从堆顶弹出一个节点t,加入我们的结果链表中。如果t对应链表的后面的一个节点为空,do nothing;否则,将t后面的一个节点假如到堆里面。重复过程3,4直到堆为空。时间复杂度:O(nklo原创 2017-03-09 15:23:43 · 615 阅读 · 0 评论 -
Leetcode 146 - LRU Cache(HashMap + List)
题意实现LRU缓存(Least Recently Used)。 要求:所有操作都是O(1)O(1)的。 LRU缓存机制:假设我们能够缓存的数目为n。在加入新元素时:当容量小于n时,我们直接加入新元素;若容量已经达到n,我们置换出最久没有使用的那个元素,并且加入我们的新元素。 思路HashMap + list。 我们需要支持的操作是put(int key, int value)和get(int原创 2017-03-12 19:39:58 · 296 阅读 · 0 评论 -
Leetcode 148 - Sort List(分治法)
题意在O(nlogn)O(nlogn)的时间和O(1)O(1)的空间内对一个链表进行排序思路分治法:归并排序分治法的基本思路:Devide and Conquer对于该题:找到链表中点,并将其从中间拆成两条链表对这两条链表分别进行归并排序将这两条链表进行归并时间复杂度:devide需要进行O(logn)O(logn)次,归并的时间复杂度是O(n)O(n),因此是O(nlogn)O(nlogn原创 2017-06-29 17:40:35 · 276 阅读 · 0 评论 -
Leetcode 445 - Add Two Numbers II(链表求和)
题意基于add two number的将2个链表相加,但是要求:不能改变输入的链表思路这道题有很多思路啊,如果能够多开空间的话,直接用一个数组或者栈保存一下链表然后相加即可。如果要求O(1)O(1)的空间,有一个很tricky的思路就是:将两个输入链表从高位往低位相加,然后翻转得到的结果链表,并且进行进位即可。然后还有一个思路就是:要解决的问题就是如何将两个数从高位往低位相加?首先,我们假设两个链表原创 2017-06-29 19:05:56 · 474 阅读 · 0 评论 -
Leetcode 328 - Odd Even Linked List(链表)
题意将链表按照奇偶分开(节点编号而不是值)思路模拟一下就好,链表题注意边界代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */cla原创 2017-06-29 19:34:25 · 291 阅读 · 0 评论 -
Leetcode 143 - Reorder List(链表重排)
题意给一个链表L:L0→L1→L2→L3→...→LnL: L_0 \to L_1 \to L2 \to L_3 \to ... \to L_n要求将其转化为:L′:L0→Ln→L1→Ln−1...L': L0 \to Ln \to L1 \to L_{n - 1} ...思路比较综合的一道链表题,分为三步去做:找到链表的中点,并且将链表从中点拆开为前后两条链表将第二条链表翻转按照题意合并第一原创 2017-06-27 18:33:25 · 315 阅读 · 0 评论 -
Leetcode 138 - Copy List with Random Pointer(链表复制)
链接https://leetcode.com/problems/copy-list-with-random-pointer/#/description题意一个链表,有三个属性:int lable, RandomListNode* next, RandomListNode* random,其中random可能指向该链表中的任意一个节点或者空结点,要求复制该链表思路我们用L表示原来的链表,L1表示复制后原创 2017-06-27 21:39:03 · 336 阅读 · 0 评论