http://www.mitbbs.com//article_t/JobHunting/32817887.html
发信人: abcee (abcee), 信区: JobHunting
标 题: 回国一趟回来做题很难进入状态了,顺便问下那个Merge k Sorted Lists
发信站: BBS 未名空间站 (Thu Oct 30 14:10:46 2014, 美东)
回国一趟回来做题很难进入状态了,有类似经历的同学么?从6月份断断续续做还不到
100道,回来一看又增加了3道题,变154道了。再看版上讨论,觉得还得花多少时间啊
。也许根本就不适合搞这行,但又不知道做其他什么工作。
看到国内挣钱门路好多啊,大家都很潇洒的说。不知道怎么调整心态,急需换个工作或
者换种活法。
Merge k sorted linked lists and return it as one sorted list. Analyze and
describe its complexity.
有人面试碰到这题么?我洋洋洒洒写了很多代码,OJ说Time Limit Exceeded
class Solution {
public:
ListNode *mergeKLists(vector<ListNode *> &lists) {
int n = lists.size();
if (n==0) return NULL;
ListNode *ret = lists[0];
for (int i=1; i<n; i++)
{
ret = merge2Lists(ret, lists[i]);
}
return ret;
}
private:
ListNode *merge2Lists(ListNode *a, ListNode *b)
{
if (a==NULL&&b==NULL) return NULL;
ListNode *r=NULL, *prev=NULL;
if (a==NULL&&b!=NULL) return b;
if (a!=NULL&&b==NULL) return a;
ListNode dummy(-1);
dummy.next = a->val>b->val?b:a;
prev = dummy.next;
if (dummy.next==a)
a= a->next;
else
b=b->next;
while(a!=NULL&&b!=NULL)
{
if (a->val<b->val)
{
prev->next = a;
prev = a;
a=a->next;
}
else
{
prev->next=b;
prev = b;
b=b->next;
}
}
prev->next = a!=NULL?a:b;
return dummy.next;
}
--
评论
发表评论