C++ 中两个已排序数组的 k-th 元素


在本教程中,我们将编写一个程序来查找两个已排序数组的合并数组中的第 k 个元素。

让我们看看解决此问题的步骤。

  • 初始化两个已排序数组。
  • 初始化一个大小为 m + n 的空数组。
  • 将这两个数组合并到新数组中。
  • 从合并后的数组中返回第 k - 1 个元素。

示例

让我们看看代码。

 实时演示

#include <iostream>
using namespace std;
int findKthElement(int arr_one[], int arr_two[], int m, int n, int k) {
   int sorted_arr[m + n];
   int i = 0, j = 0, index = 0;
   while (i < m && j < n) {
      if (arr_one[i] < arr_two[j]) {
         sorted_arr[index++] = arr_one[i++];
      }else {
         sorted_arr[index++] = arr_two[j++];
      }
   }
   while (i < m) {
      sorted_arr[index++] = arr_one[i++];
   }
   while (j < n) {
      sorted_arr[index++] = arr_two[j++];
   }
   return sorted_arr[k - 1];
}
int main() {
   int arr_one[5] = {1, 3, 5, 7, 9}, arr_two[5] = {2, 4, 6, 8, 10};
   int k = 7;
   cout << findKthElement(arr_one, arr_two, 5, 4, k) << endl;
   return 0;
}

输出

如果运行上述代码,则将获得以下结果。

7

结论

如果对本教程有任何疑问,请在评论部分中提及。

更新日期:09-Apr-2021

118 次浏览

开启您的职业生涯

完成课程并获得认证

开始学习
广告
© . All rights reserved.