2013年4月10日

摘要: list题目:0,1,...,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第n个数字。求出这个圆圈里剩下的最后一个数字。思路:可以用list来模拟环形链表,当迭代器达到end时(end是超出末尾的哨兵),迭代器重新赋值为begin。list内部erase效率非常高,注意erase的迭代器的后一位是作为下一次迭代的开始位,也要满足环形特点。时间复杂度为O(mn),空间复杂度为O(n)。LastRemaining 1 int LastRemaining(unsigned int n, unsigned int m) 2 { 3 if(n < 1 || m < 1) 4 阅读全文
posted @ 2013-04-10 15:13 月moon鸟 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 参考:http://zhedahht.blog.163.com输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是按照增序排列的。输入两个单链表(无环),找出他们的第一个公共节点。判断两个单链表(可能有环)是否相交。1、思路: 类似与归并排序,但是这里只需要修改指针指向,不需要另辟空间,通过递归的方式,从后往前拼接链表。MergeList 1 ListNode* Merge(ListNode* pHead1, ListNode* pHead2) 2 { 3 if(pHead1 == NULL) 4 return pHead2; 5 else if(... 阅读全文
posted @ 2013-04-10 13:08 月moon鸟 阅读(180) 评论(0) 推荐(0) 编辑

导航