c++ - Google Kickstart 2020 轮 D- 破纪录者问题
问题描述
我的解决方案是否适用于所有测试用例。这是 google kickstart 2020 round d 问题。对于 4 个测试用例,我的输出是正确的。时间复杂度也是 O(n)。
#include <iostream>
using namespace std;
int main(){
int n;
cin>>n;
int a[n+1];
a[n] = -1;
for(int i = 0; i < n; i++){
cin>>a[i];
}
int max = 0;
int ans = 0;
if(a[1] < a[max]){
ans = 1;
}
for(int i = 1; i < n; i++){
if(a[i] > a[max]){
if(a[i] > a[i+1]){
max = i;
ans++;
}
}
}
cout<<ans<<endl;
return 0;
}
解决方案
问题应该是:
您的代码错误,因为它输出1
输入
3
1 2 2
而答案应该是0
。
- 第一天不是破纪录,因为它不是最后一天,而且第二天的数字也不是严格大于一个。
- 第二天不是破纪录,因为它不是最后一天,而且第二天的数字也不是严格大于一。
- 第三天不是破纪录,因为第二天的数字并不严格大于一。
错误在于,只有当一天的数字大于第二天的数字时,您才更新最大值。
推荐阅读
- html - 在同一行对齐 figcaption 和 figure 标签
- jquery - 如何在 SignalR 的 accessTokenFactory 中异步传递更新的令牌?
- prometheus - 普罗米修斯的灭霸查询器重复数据删除问题
- cgal - 使用 CGAL 内置数字类型
- django - 博客:如何创建一个博客,在其中可以加载我想要的任何 JS/CSS 文件并将其格式化为我想要的任何布局?
- postgresql - 使用 pbbackrest 进行异常大的增量备份
- javascript - 如何从插件更改 Grid.js 状态?
- r - 在ggplot中绘制3D环形
- javascript - Microsoft Teams 自定义选项卡应用程序 - 地理位置问题
- c# - 从 namedpipeServerStream 读取时如何处理超时?