c++ - 如何在c ++中找到第一个最大值?
问题描述
我搜索最长范围的数组。数组元素为:2 3 4 7 8,结果为 2-4。如果数组有 2 个或更多相同的范围怎么办。怎样才能找到第一个?
for (int i = 0; i < n-1; i++) {
if (t[i] == t[i+1] -1) {
cur++;
}
else {
if (cur> max) {
max = cur;
first= cur_first;
last= t[i];
}
cur= 1;
cur_first= t[i+1];
}
}
if (cur> max) {
cur= max;
first= cur_first;
last= t[n-1];
}
解决方案
如果您在内部添加另一个循环只是为了获取范围,它会更简单(更快)。
int t[] = {2,3,4,7,8,2,3,4};
int n = sizeof(t)/sizeof(t[0]);
struct {
int idx; //start index.
int len; //length of range.
} cur, max = {0,1};
for (int i = 0; i < n-1; i++) {
//---get the current range.
cur.len = 1;
cur.idx = i;
while(t[i]==t[i+1]-1){
cur.len++; i++;
if(i >= n-1) break;
}
//---save the range with maximum length.
if(cur.len > max.len){
max = cur;
if(max.len > n-i-1) break; //optimization code. can be optional.
}
}
printf("max range: idx=%d; len=%d; firstValue=%d",max.idx, max.len, t[max.idx]);
推荐阅读
- python - 如何使 Python selenium 点击速度更快?
- javascript - 正则表达式验证 3 位数字和带小数点的两位小数
- ios - 如何使 UITabbar 背景颜色清晰?
- php - 使用 PHP 以编程方式创建新的 Google 联系人
- jquery - jQuery用换行符替换所有连字符
- java - 从 JAVA 客户端到 Remedy Helix 的连接超时
- python-3.6 - 使用qpython和python3.6查询kdb
- python - Dask Distributed:如何从集群中删除上传的文件
- c# - C# UIAutomation 使 Excel 崩溃
- django - 嵌套在单独的 Django 模型表中等效的 for 循环字符串