データ構造-武大933
1077 ワード
2018武漢大学933
2つの整数は、順序付けられたシーケンスAをインクリメントし、Bはそれぞれnとmの要素を持ち、k番目の大きな数(1≦K≦n+m)を求め、最適な時間空間の複雑さを要求する.
関数プロトタイプ:int kMax(int[]A,int[]B,int k)
例:
入力
A[1,3,4,5,6]
B[3,4,5,6]
k=4
出力
4
2つの整数は、順序付けられたシーケンスAをインクリメントし、Bはそれぞれnとmの要素を持ち、k番目の大きな数(1≦K≦n+m)を求め、最適な時間空間の複雑さを要求する.
関数プロトタイプ:int kMax(int[]A,int[]B,int k)
例:
入力
A[1,3,4,5,6]
B[3,4,5,6]
k=4
出力
4
#include
#include
#include
#include
#define MAX 0x3f3f3f3f
using namespace std;
int findIthValue(int a[], int n1, int b[], int n2, int k)
{
/*
,
,
*/
int s1= 0, s2= 0;
int count = 0, now = 0;
while(s1 < n1 && s2 < n2)
{
if(a[s1] <= b[s2])
{
now = a[s1++];
count++;
}
else if(a[s1] > b[s2])
{
now = b[s2++];
count++;
}
if(count == k)
return now;
}
while(s1 < n1)
{
now = a[s1++];
count++;
if(count == k)
return now;
}
while(s2 < n2)
{
now = b[s2++];
count++;
if(count == k)
return now;
}
return MAX;
}
int main()
{
int a[] = {1};
int b[] = {3,4,6,8};
int result = findIthValue(a, 1, b, 4, 3);
cout<