leetcode之排序題目總結

2021-08-07 07:57:55 字數 1888 閱讀 6768

之前總結過排序的方法,在這裡在寫一下快速排序。

快速排序的本質就是分治演算法,先找到該元素的正確位置,然後再將兩邊的元素遞迴進行快速排序。

**如下:

int partition(vector&nums,int left,int right)

nums[left]=nums[right];

while(left&nums,int left,int right)

int pivot=partition(nums,left,right);

quicksort(nums,left,pivot-1);

quicksort(nums,pivot+1,right);

}

快速排序可以用來求解第k大數字:

class solution 

nums[right]=nums[left];

while(left&nums,int left,int right)

while(l<=r&&nums[r]<=pivot)

if(l& nums, int k)

if(posleetcode中的tag為sort的題目:

leetcode56:題目

區間合併,思路:將區間按照開始值進行排序,將第乙個加入到結果中,然後依次遍歷,如果遍歷的元素的開始處大於等於結果最後乙個元素的結束值,那麼修改結果中最後乙個元素中的結束值。否則,加入到結果中。

**如下:

/*** definition for an interval.

* struct interval

* interval(int s, int e) : start(s), end(e) {}

* };

*/static bool cmp(interval a,interval b)

sort(intervals.begin(),intervals.end(),cmp);

ret.push_back(intervals[0]);

for(int i=1;i57:插入區間

57. insert interval

解題思路:同上面的題目,給定乙個區間,插入到陣列中去。然後返回新的陣列。從開始處進行遍歷,如果當前的區間的結束值小於新區間的開始值,則加到結果中,如果當前遍歷到的區間的開始值大於給定的新區間的開始值,那麼跳出迴圈。否則,新區間和當前遍歷的區間有交集,去兩個區間的並集即可。

**如下:

/*** definition for an interval.

* struct interval

* interval(int s, int e) : start(s), end(e) {}

* };

*/class solution

else

// 每個桶的長度len,向上取整所以加+

int len = (maxnum - minnum) / num.size() + 1;

//桶的個數:(maxnum - minnum) / len + 1,每個桶裡面儲存屬於該桶的最大值和最小值即可,注意這裡的最大最小值是區域性的

vector> buckets((maxnum - minnum) / len + 1);

for (int x : num)

else

}//gap的計算,for each non-empty buckets p, find the next non-empty buckets q, return min( q.min - p.max )

int gap = 0;

int prev = 0;

for (int i = 1; i < buckets.size(); i++)

return gap;

}};

leetcode 排序題目

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....

Leetcode128 題目總結 hard

the first missing positive 找第乙個丟失的整數 方法1 從1開始尋找正整數result 找到就把他交換到nums i 同時i回退到result 1,時間複雜度大於o n ac class solution else return result 方法2 對每乙個大於1的數nu...

Leetcode中Path的題目總結

matrix中的path問題 62.unique paths 63.unique paths ii 這兩題是典型的dp問題,要求一共有多少種方案。分析狀態f i,j 是走到 i,j 總共的路徑。它可以由前面兩個狀態得到,即f i,j f i 1,j f i,j 1 最後注意邊界值即可。變形是有設ob...