merge k sorted lists
insertion sort list
sort list
first missing positive
sort colors
147. insertion sort list
sort a linked list using insertion sort.
使用直接插入排序將乙個鍊錶排序。
因為鍊錶只能向後走,所以插入時,從表頭向後插入。注意第一次迴圈pre和cur指向第乙個元素,第二次迴圈pre和cur才有先後順序,這樣才能保證最後乙個節點也參與到排序中來。
另外,頭指標p每次內迴圈都需要回到初始位置。
還有,做插入排序與不做插入排序的結尾pre和cur的處理是不一樣的
class solution
listnode* temp=p->next;
p->next=cur;
cur->next=temp;
cur=pre->next;
p=ha;//需要讓p指標再次指向頭指標
}else
}p=newhead->next;
delete newhead;
return p;
}};
148. sort list
sort a linked list in o(
nlog
n) time using constant space complexity.
將乙個鍊錶排序,要求時間複雜度是o(n
log
n),空間複雜度是常數。
41. first missing positiveclass solution
pre->next=nullptr;//兩個鍊錶分割
//2 遞迴分割
listnode* l1=sortlist(head);//遞迴呼叫
listnode* l2=sortlist(slow);
//3 合併
return merge(l1,l2);
}listnode* merge(listnode* l1,listnode* l2)
else
p=p->next;
}if(l1) p->next=l1;
if(l2) p->next=l2;
return newhead->next;//返回合併之後的鍊錶
}};
given an unsorted integer array, find the first missing positive integer.
for example,
given[1,2,0]
return3
,
and[3,4,-1,1]
return2
.
your algorithm should run in o(n) time and uses constant space.
桶排序
class solution
for(int i=0;i
23. merge k sorted lists
merge
ksorted linked lists and return it as one sorted list. analyze and describe its complexity.
使用優先順序佇列和堆排序
349. intersection of two arrays
given two arrays, write a function to compute their intersection.
example:
given nums1 =[1, 2, 2, 1]
, nums2 =[2, 2]
, return[2]
.
note:
350. intersection of two arrays ii
given two arrays, write a function to compute their intersection.
example:
given nums1 =[1, 2, 2, 1]
, nums2 =[2, 2]
, return[2, 2]
.
note:
the result can be in any order.
follow up:
leetcode之排序題目總結
之前總結過排序的方法,在這裡在寫一下快速排序。快速排序的本質就是分治演算法,先找到該元素的正確位置,然後再將兩邊的元素遞迴進行快速排序。如下 int partition vector nums,int left,int right nums left nums right while left nu...
leetcode經典題目(6) 排序
1.陣列中的第k個最大元素 no.215 題目描述 在未排序的陣列中找到第 k 個最大的元素。請注意,你需要找的是陣列排序後的第 k 個最大的元素,而不是第 k 個不同的元素。解題思路 對陣列進行排序,返回第k個最大的元素。1 可以使用排序函式sort,時間複雜度 o nlogn 空間複雜度 o 1...
LeetCode題目 合併K個排序鍊錶
合併k個排序鍊錶是我在刷leetcode的時候遇到的題目,描述大致如下 合併 k 個排序鍊錶,返回合併後的排序鍊錶。請分析和描述演算法的複雜度。輸入 1 4 5,1 3 4,2 6 輸出 1 1 2 3 4 4 5 6 一開始的思路是類似於合併兩個有序鍊錶的思路,就是每次在這k個鍊錶中取出乙個最小的...