Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค้นหาองค์ประกอบขั้นต่ำที่ K จากอาร์เรย์ที่ต่อกัน M ครั้งใน C++


พิจารณาว่าเรามีอาร์เรย์ A และจำนวนเต็ม K และ M อีกสองจำนวน เราต้องหาองค์ประกอบขั้นต่ำ Kth หลังจากเชื่อมอาร์เรย์เข้ากับตัวเอง M จำนวนครั้ง สมมติว่าอาร์เรย์เป็นเหมือน 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