Google Kickstart 2020 轮 D- 破纪录者问题

Posted

技术标签:

【中文标题】Google Kickstart 2020 轮 D- 破纪录者问题【英文标题】:Google Kickstart 2020 round D- Record Breaker Question 【发布时间】: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是正确的地方问 【参考方案1】:

问题应该是:

Record Breaker - Kick Start

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

3
1 2 2

而答案应该是0

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

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

【讨论】:

以上是关于Google Kickstart 2020 轮 D- 破纪录者问题的主要内容,如果未能解决你的问题,请参考以下文章

Google Kickstart 2020 Round A 分配问题

kickstart 谷歌 D 2020 年 7 月 12 日 13: 00 - 16: 00

Google Kickstart 2018,测试用例中的回合错误

Kickstart Terraform on GCP with Google Cloud Shell

2019 Google Kickstart Round H

2019 google kickstart round A