在C ++中找到给定n个范围的第k个最小元素

在这个问题中,我们得到n个范围和一个整数k。我们的任务是在给定的n个范围内找到第k个最小的元素。 

我们需要从组合范围后创建的数组中找到第k个最小的元素。

让我们举个例子来了解这个问题, 

输入:  range = {{2,5},{7,9},{12,15}},k = 9

输出:  13

解释: 

创建的数组为{2、3、4、5、7、8、9、12、13、14、15}

最小的元素是13

解决方法:

解决此问题的简单方法是,从所有范围创建数组,并且从范围创建数组时,也按升序排序。因此,我们只需要找到数组的第k个值即可。

该程序说明了我们解决方案的工作原理,

示例

#include <iostream>

using namespace std;

int main(){

   

   int arr[][2] = {{2, 5}, {7, 9}, {12, 15}};

   int n = sizeof(arr)/sizeof(arr[0]);

   int k = 9;

   int rangeArr[1000];

   int size = 0;

   for(int i = 0; i < n; i++)

      for(int j = arr[i][0]; j <= arr[i][1]; j++) {

         rangeArr[size] = j;  

         size++;

      }

   if(k < size)

      cout<<k<<"th范围数组的最小元素是 "<<rangeArr[k]<<endl;

   else

      cout<<"invalid Index";

   return 0;

}

输出结果
9th范围数组的最小元素是 13

以上是 在C ++中找到给定n个范围的第k个最小元素 的全部内容, 来源链接: utcz.com/z/314292.html

回到顶部