LeetCode 面試題40 最小的k個數

2021-10-04 04:22:32 字數 899 閱讀 2296

leetcode:面試題40. 最小的k個數

輸入整數陣列 arr,找出其中最小的 k 個數。例如,輸入4、5、1、6、2、7、3、8這8個數字,則最小的4個數字是1、2、3、4。

示例 1:

輸入:arr = [3,2,1], k = 2

輸出:[1,2] 或者 [2,1]

示例 2:

輸入:arr = [0,1,2,1], k = 1

輸出:[0]

限制:0 <= k <= arr.length <= 10000

0 <= arr[i] <= 10000

1.手寫排序

class

solution

b[left]

=pivot;

return left;

}void

quicksort

(vector<

int>

& a,

int left,

int right)

}

vector<

int>

getleastnumbers

(vector<

int>

& arr,

int k)

quicksort

(arr,

0,arr.

size()

-1);

for(

int i=

0;i)return res;}}

;

2.簡潔(呼叫函式)

class

solution

};

3.當然還有很多思路,一步步來,打基礎

可以排序取前n個就行了,自己基礎不好,多寫寫總是好的。

LeetCode 面試題40 最小的k個數

題目 題目鏈結 輸入整數陣列 arr 找出其中最小的 k 個數。例如,輸入4 5 1 6 2 7 3 8這8個數字,則最小的4個數字是1 2 3 4。示例 1 輸入 arr 3,2,1 k 2 輸出 1,2 或者 2,1 示例 2 輸入 arr 0,1,2,1 k 1 輸出 0 題解根據陣列的前k個...

LeetCode 面試題40 最小的k個數

輸入整數陣列arr,找出其中最小的k個數。例如,輸入4 5 1 6 2 7 3 8這8個數字,則最小的4個數字是1 2 3 4。示例 1 輸入 arr 3,2,1 k 2輸出 1,2 或者 2,1 示例 2 輸入 arr 0,1,2,1 k 1輸出 0 限制 每日打卡,top k問題,複習一下堆排序...

面試題40 最小k個數

題目 輸入n個整數,找出其中最小的k個數 思路 1 如果輸入的陣列可以改變,則基於第k個數來調整,是第k個數左邊的數都小於第k個數,右邊的數都大於第k個數 時間複雜度o n 思路1 void printkminnumberbymethod1 int arr,int length,int k int ...