題目描述數組
連接:https://www.nowcoder.com/questionTerminal/ec2575fb877d41c9a33d9bab2694ba47?source=relative 來源:牛客網 無序數組中最小的k個數 對於一個無序數組,數組中元素爲互不相同的整數,請返回其中最小的k個數,順序與原數組中元素順序一致。 給定一個整數數組A及它的大小n,同時給定k,請返回其中最小的k個數。 測試樣例: [1,2,4,3],4,2 返回:[1,2]
代碼測試
須要保留K個較小的元素,能夠刪除n-k個較大的元素。spa
public class KthNumbers { public static int[] findKthNumbers(int[] A, int n, int k) { int delNum = n - k;// 要刪除的元素數量 int len = A.length;// 實際數組中的元素個數 while (delNum > 0) { // 找到當前數組中最大的元素 int maxIndex = 0;// 記錄最大元素的下標 int i; for (i = 1; i < len; i++) {// 尋找最大元素並記錄其在數組中的下標 if (A[maxIndex] < A[i]) { maxIndex = i; } } // 刪除當前最大元素即maxIndex for (int j = maxIndex; j < len - 1; j++) { A[j] = A[j + 1]; } len--; delNum--; } int result[] = new int[k]; for (int i = 0; i < k; i++) { result[i] = A[i]; } return result; } }