劍指offer系列22 最小的K個數

2022-04-03 02:22:20 字數 1384 閱讀 4796

我的第乙個思路就是用快排的方法做,找到下標為k 的數字。其中的細節多注意,特別是在快排的函式呼叫的時候。

1 #include 2 #include3 #include4

using

namespace

std;56

class

solution

24sort(auxi.begin(), auxi.end());

25return

auxi;

2627}28

void findx(vector &ve2, int low, int high,int

n)29

39else

4044}45

}46int partition(vector &ve, int low, int high)//

快排的函式,我上乙個題中的函式寫錯了

4761 ve[low] =sig;

62return

low;63}

64};

65int

main()66;

69 vectorresult;

70 result=so.getleastnumbers_solution(test, 4

);71

for (int i = 0; i < result.size(); i++)

7275

return0;

76 }

第二種方法:在答案裡看到的,由於我自己也不是很理解,所以沒怎麼寫注釋

1 #include 2 #include3 #include

4 #include 5

using

namespace

std;67

class

solution

15 multiset>leastnumbers;

16 vector::iterator vec_it =input.begin();

17for (; vec_it != input.end(); vec_it++)

1829}30

}31return vector(leastnumbers.begin(), leastnumbers.end());32}

33};

34int

main()35;

38 vectorresult;

39 result = so.getleastnumbers_solution(test, 4

);40

for (int i = 0; i < result.size(); i++)

4144

return0;

45 }

劍指Offer系列40 最小的k個數

輸入整數陣列 arr 找出其中最小的 k 個數。例如,輸入4 5 1 6 2 7 3 8這8個數字,則最小的4個數字是1 2 3 4。pythonclass solution def getleastnumbers self,arr list int k int list int if k 0 re...

劍指Offer系列40 最小的K個數

輸入整數陣列arr,找出其中最小的 k 個數。例如,輸入4 5 1 6 2 7 3 8這8個數字,則最小的4個數字是1 2 3 4。方法一 排序 class solution return vec 方法二 堆 class solution priority queue int q for int i...

劍指offer系列 29 最小的K個數

q 輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,t 注意空的情況和k過大的情況。1.直接排序輸入。vectorgetleastnumbers solution vectorinput,int k if k input.siz...