关于用max,min函数超时的情况—算法小Tips

今天在做这道题的时候,有了一点对一些题max函数min函数就会超时的思考,不是每道题都这样,但也可以是个做题小tips;

题目连接:登录—专业IT笔试面试备考平台_牛客网

题目很简单,用个前缀和暴力一下就行,但不是最优解,会超时

我最开始的代码如下:

#include<bits/stdc++.h>
using namespace std;
#define PII pair<string,string>
const int N = 1e6;
int a[N],sum[N];
int main(){
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        a[i]%=7;
        sum[i]=a[i]+sum[i-1];
        
    }
    int ans=-1,flag=0;
    for(int i=1;i<=n;i++){
        for(int j=i;j<=n;j++){
            if((sum[j]-sum[i-1])%7==0){
                ans=max(j-i+1,ans);
                flag=1;
            }
        }
    }
    if(flag==1)cout<<ans;
    else cout<<-1;
    
}

在这个代码中,我在每个能被7整除的区间都进行了一次max判断,本来就是O(n2)的复杂度,可能有很多被7整除的情况,都要进入 if((sum[j]-sum[i-1])%7==0){
                ans=max(j-i+1,ans);
                flag=1;
            }

中进行max比较,从而加大了处理次数,这道题也是超时了。

修改代码如下:

#include<bits/stdc++.h>
using namespace std;
#define PII pair<string,string>
const int N = 1e6;
int a[N],sum[N];
int main(){
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        a[i]%=7;
        sum[i]=sum[i]+a[i-1];
        
    }
    int maxx=-1,flag=0;
    for(int i=1;i<=n;i++){
        for(int j=i;j<=n;j++){

            int t=j-i+1;

            if(t>=maxx){
            
            if((a[j]-a[i-1])%7==0){
                maxx=t;
                flag=1;
                }

            }
        }
    }
    if(flag==1)cout<<maxx;
    else cout<<-1;
    return 0;
}

很明显,我把没有比之前最大值大的数直接pass掉,不进入是否被7整除的区间判断,从而减小了处理次数。

综上所述:尽量不要偷懒,暴力用max或者min函数进行判断,会增加很多没必要的处理次数,有时候就是因为这个会卡着你过不去,所以可以直接定义一个变量进行与当前值比大小的判断,节省了用max函数或者min函数。

相关推荐

  1. 关于TCP vegas算法杂谈

    2024-03-17 13:24:02       40 阅读
  2. 关于SpringBoot MVC接口超时时间分析

    2024-03-17 13:24:02       11 阅读
  3. 蓝桥杯算法基础(28)11道关于字符串

    2024-03-17 13:24:02       19 阅读
  4. 关于QUOTENAME

    2024-03-17 13:24:02       38 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-17 13:24:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-17 13:24:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-17 13:24:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-17 13:24:02       18 阅读

热门阅读

  1. HTML

    HTML

    2024-03-17 13:24:02      17 阅读
  2. 在CentOS 7系统下通过二进制方式安装MySQL 8.0.34

    2024-03-17 13:24:02       18 阅读
  3. Jtti:如何在CentOS中安装和配置Tomcat应用服务器

    2024-03-17 13:24:02       20 阅读
  4. NIO学习笔记

    2024-03-17 13:24:02       19 阅读
  5. dp动态规划的基本

    2024-03-17 13:24:02       21 阅读
  6. CCF CSP试题编号: 202312-2试题名称: 因子化简

    2024-03-17 13:24:02       18 阅读
  7. MongoDB聚合运算符:$eq

    2024-03-17 13:24:02       21 阅读
  8. 英语随笔,发散了 3.17

    2024-03-17 13:24:02       18 阅读
  9. web安全——sql注入漏洞知识点总结

    2024-03-17 13:24:02       18 阅读
  10. 嵌入式摄像头,获取视频要通过进程通讯?

    2024-03-17 13:24:02       20 阅读