在 C++ 中查找给定 n 个范围内的第 k 小元素
在这个问题中,我们给定了 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<<"th smallest element of the ranged array is "<<rangeArr[k]<<endl;
else
cout<<"invalid Index";
return 0;
}输出
9th smallest element of the ranged array is 13
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP