leetcode 排序題目

2021-08-05 18:56:01 字數 2323 閱讀 1855

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),空間複雜度是常數。

class 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;//返回合併之後的鍊錶

}};

41. first missing positive

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個鍊錶中取出乙個最小的...