在 C++ 中,在给定的 n 个范围中查找第 k 个最小元素
c++server side programmingprogramming
在此问题中,我们给定了 n 个范围和一个整数 k。我们的任务是在给定的 n 个范围中找到第 k 个最小元素。
我们需要从组合范围后创建的数组中找到第 k 个最小元素。
让我们举一个例子来理解这个问题,
输入:范围 = {{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<<"范围数组的第 9 个最小元素是 "<<rangeArr[k]<<endl; else cout<<"invalid Index"; return 0; }
输出
范围数组的第 9 个最小元素是 13