在 C++ 中查詢一個連線 M 次的陣列的第 k 個最小元素


假設我們有一個數組 A,以及其他兩個整數 K 和 M。在將陣列連線到自身 M 次後,我們必須找到 Kth 最小元素。假設陣列像 A = [3, 1, 2],K = 4 和 M = 3,那麼在連線 A 3 次後,它將為 [3, 1, 2, 3, 1, 2, 3, 1, 2],這裡的第 4 個最小元素是 2。

要解決此問題,我們必須對陣列 A 進行排序,然後返回存在於陣列索引 ((K – 1)/M) 中的值。

例項

 動態演示

#include<iostream>
#include<algorithm>
using namespace std;
int findKSmallestNumber(int A[], int N, int M, int K) {
   sort(A, A + N);
   return (A[((K - 1) / M)]);
}
int main() {
   int A[] = { 3, 1, 2 };
   int M = 3, K = 4;
   int N = sizeof(A) / sizeof(A[0]);
   cout << K << "th smallest number after concatenating " << M << " times, is: "<<findKSmallestNumber(A, N, M, K);
}

輸出

4th smallest number after concatenating 3 times, is: 2

更新於: 2019-12-19

92 次瀏覽

開啟你的 職業生涯

完成課程獲得認證

開始
Advertisement