Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tìm phần tử nhỏ thứ K từ mảng nối M lần trong C++


Cho mảng A và hai số K, M. Tìm phần tử nhỏ thứ K sau khi nối mảng với chính nó M lần. A = [3, 1, 2], K = 4, M = 3, sau khi nối 3 lần: [3, 1, 2, 3, 1, 2, 3, 1, 2], phần tử nhỏ thứ 4 là 2.

Giải quyết: sắp xếp A, trả về giá trị tại chỉ số ((K-1)/M) của mảng đã sắp xếp.

Ví dụ mã nguồn

#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); }

Kết quả

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