【问题标题】:Google Kickstart 2020 round D- Record Breaker QuestionGoogle Kickstart 2020 轮 D- 破纪录者问题
【发布时间】:2021-07-07 10:45:13
【问题描述】:

我的解决方案是否适用于所有测试用例。 这是 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;
}

【问题讨论】:

  • int a[n+1]; 是一个可变长度数组。它不在标准 C++ 中。您应该考虑改用std::vector。
  • 除此之外,还有其他问题。
  • 对于可以使用一些改进的工作代码codereview.stackexchange.com是正确的地方问

标签: c++


【解决方案1】:

问题应该是:

Record Breaker - Kick Start

你的代码是错误的,因为它输出1作为输入

3
1 2 2

而答案应该是0。

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

问题在于,仅当一天的数字大于第二天的数字时,您才更新最大值。

【讨论】:

    猜你喜欢
    • 2020-11-21
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多