会员
周边
新闻
博问
闪存
众包
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
牧马人夏峥
博客园
首页
新随笔
联系
订阅
管理
上一页
1
···
36
37
38
39
40
41
42
43
44
···
62
下一页
2016年5月23日
leetcode 之LRU Cache(26)
摘要: 很实际的一道题。定义一个双向链表list,方便插入和删除;定义一个哈希表,方便查找。 具体的,哈希表存放每个结点的key和它对应的结点的地址;访问结点时,如果结点存在,则将其交换到头部,同是更新哈希表中的地址; 插入结点时,首先判断capacity是否达到了上限,如果是则在链表和哈希表中删除该结点;
阅读全文
posted @ 2016-05-23 11:03 牧马人夏峥
阅读(160)
评论(0)
推荐(0)
2016年5月21日
leetcode 之Reorder List(25)
摘要: 找到中间结点,将后半部分反转接入即可。 ListNode *reoderList(ListNode* head) { if (head == nullptr || head->next == nullptr)return head; //找到中间结点的方法很巧妙 ListNode *slow = h
阅读全文
posted @ 2016-05-21 16:14 牧马人夏峥
阅读(132)
评论(0)
推荐(0)
leetcode 之Linked List Cycle(24)
摘要: 两个思路,一是用哈希表记录每个结点是还被访问过;二是定义两个快、慢指针,如果存在环的话,两个指针必定会在某位结点相遇。 bool linkListNode(ListNode *head) { ListNode *fast=head, *slow=head; while (fast && fast->
阅读全文
posted @ 2016-05-21 16:02 牧马人夏峥
阅读(100)
评论(0)
推荐(0)
leetcode 之Copy List with Random Pointer(23)
摘要: 深拷贝一个链表,不同的是这个链表有个额外的随机指针。参考:http://blog.csdn.net/ljiabin/article/details/39054999 做法非常的巧妙,分成三步,一是新建结点,并放在旧结点之后;二是修改新结点的random指针;三是将新旧链表断开。 RandomList
阅读全文
posted @ 2016-05-21 15:29 牧马人夏峥
阅读(114)
评论(0)
推荐(0)
2016年5月19日
leetcode 之Reverse Nodes in k-Group(22)
摘要: 这题有点繁琐,在更新指针时很容易出错。 ListNode *reverseKGroup(ListNode *head, int k) { if (head == nullptr || head->next == nullptr || k < 2)return head; ListNode dummy
阅读全文
posted @ 2016-05-19 15:52 牧马人夏峥
阅读(161)
评论(0)
推荐(0)
leetcode 之Swap Nodes in Pairs(21)
摘要: 不允许通过值来交换,在更新指针时需要小心。 ListNode *swapNodes(ListNode* head) { ListNode dummy(-1); dummy.next = head; for (ListNode *prev = &dummy, *cur = prev->next, *p
阅读全文
posted @ 2016-05-19 14:48 牧马人夏峥
阅读(117)
评论(0)
推荐(0)
leetcode 之Remove Nth Node From End of List(19)
摘要: 这题比较简单,方法有很多。其中一种比较有意思的做法是设置两个指针,一个先走n步,然后再一起走。一个到了末尾,另一个也就确定了要删除元素的位置。 ListNode *removeNthFromEnd(ListNode *head, int n) { ListNode dummy{-1, head};
阅读全文
posted @ 2016-05-19 14:27 牧马人夏峥
阅读(110)
评论(0)
推荐(0)
leetcode 之Rotate List(18)
摘要: 这题我的第一想法是用头插法,但实际上并不好做,因为每次都需要遍历最后一个。更简单的做法是将其连成环,找到相应的位置重新设头结点和尾结点。这过 有很多细节需要注意,比如K有可能是大于链表长度的,如何重新设置K等都要注意。 ListNode *rotateList(ListNode *head, int
阅读全文
posted @ 2016-05-19 14:06 牧马人夏峥
阅读(120)
评论(0)
推荐(0)
2016年5月18日
leetcode 之Remove Duplicates from Sorted List(17)
摘要: 很简单的一题,需要注意的是如果某结点重复了记得将其删除。 ListNode *deleteDuplicates(ListNode *head) { if (head == nullptr) return nullptr; ListNode *prev = head; for (ListNode *c
阅读全文
posted @ 2016-05-18 15:34 牧马人夏峥
阅读(136)
评论(0)
推荐(0)
leetcode 之Partition List(16)
摘要: 思路就是定义两个链表,一个放大的,一个放小的,最后将两个连起来,注意细节问题。 ListNode *partionList(ListNode *head, int value) { ListNode left_dummy(-1); ListNode right_dummy(-1); auto lef
阅读全文
posted @ 2016-05-18 15:15 牧马人夏峥
阅读(103)
评论(0)
推荐(0)
上一页
1
···
36
37
38
39
40
41
42
43
44
···
62
下一页
公告