在 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
Advertisement