我的第乙個思路就是用快排的方法做,找到下標為k 的數字。其中的細節多注意,特別是在快排的函式呼叫的時候。
1 #include 2 #include3 #include4using
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 #include4 #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...