在 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
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP