首页 > 解决方案 > 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;
}

标签: c++

解决方案


问题应该是:

破纪录者 - 启动

您的代码错误,因为它输出1输入

3
1 2 2

而答案应该是0

  • 第一天不是破纪录,因为它不是最后一天,而且第二天的数字也不是严格大于一个。
  • 第二天不是破纪录,因为它不是最后一天,而且第二天的数字也不是严格大于一。
  • 第三天不是破纪录,因为第二天的数字并不严格大于一。

错误在于,只有当一天的数字大于第二天的数字时,您才更新最大值。


推荐阅读