C++でM回連結された配列からK番目の最小要素を見つけます
配列Aと、さらに2つの整数KとMがあるとします。配列をそれ自体にM回連結した後、K番目の最小要素を見つける必要があります。配列が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
-
C++の配列内の各要素のSurpasserCountを検索します
1つの配列Aが与えられたと仮定します。その配列内の各要素の超過者の数を見つける必要があります。超過者は、現在の要素の配列の右側に存在するより大きな要素です。 A ={2、7、5、3、0、8、1}とすると、超過者は{4、1、1、1、2、0、0}であるため、2の右側には4つの数字があります。 4よりも多く、他の人にも同じルールがあります。解決策は非常に単純で、2つのネストされたループがあり、要素ごとに、超過者をカウントして、別の配列に格納します。 例 #include <iostream> using namespace std; void gerSurpassers(int arr[
-
配列を分割する方法でk番目に小さい要素を見つけるC++プログラム
配列を分割する方法でk番目に小さい要素を見つけるC++プログラムを開発します。 アルゴリズム Begin Function CreatePartition() has an array a, and the lower l and upper limit h as arguments in := l and pi := h for i in range l to h, do if a[i] < a[pi], then