题目描述:

解题思路:
创建一个查找函数用于查找
在主函数中完成n、序列和m的输入,然后根据m次数循环调用查找函数
解题方法:
方法:如解题思路
在主函数中创建一个n数组以及一个答案数组,将查询到的值保存到答案数组中,最后输出即可
在查找函数中使用一个临时数组来保存对应区间的数组值,将临时数组排序并返回从后往前数k-1的值即为第几大的数
遇到问题:
一开始临时数组长度我设置的是r-l,后面发现超界,反应过来应该是r-l+1才对,改正之后所有用例正常
代码:
#include<bits/stdc++.h>
using namespace std;
int findMax(int l, int r, int k,vector<int> arr){
int len = r-l+1;
vector<int> temp;//临时数组长度为区间长度+1
int cc = len;
while(cc--){//临时数组赋值
temp.push_back(arr[l]);
l++;
}
//将临时数组排序,排序之后可以按照位置获取第几大值
sort(temp.begin(),temp.end

本文介绍了如何使用C++解决蓝桥杯比赛中的区间k大数查询问题。解题思路包括创建查找函数,输入n、序列和m,循环调用查找函数。在查找函数中,通过排序临时数组找到第k大的数。文章还提到了在实现过程中遇到的临时数组长度超界问题及其解决方案。
最低0.47元/天 解锁文章
578

被折叠的 条评论
为什么被折叠?



