题解 | #丢手绢#java

丢手绢

https://ac.nowcoder.com/acm/problem/207040

import java.util.Scanner;

public class Main {
    public static void main(String []args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        int sum = 0;
        int count = 0;
        int min_mark = 2147483647;
        int left = 0;
        int right = 0;
        int [] shuru = new int[n];
        for(int i = 0;i<n;i++){
            shuru[i] = sc.nextInt();
            sum +=shuru[i];
        }
        double half = sum/2.0;
        
        while(right<2*n-1&&left<n){
           if(count<half){
            count+=shuru[right%n];
            right++;
           }else{
            if(count<min_mark){
                min_mark = count;
                count = count-shuru[left];
                left++;
            }else{
                count = count-shuru[left];
                left++;
            }
           }
        }
        if(sum == 0) System.out.println(0);
        else if(left == 0) System.out.println(sum);
        else System.out.println(sum-min_mark);
    }
}


其中值得注意的是,这是一个圆,可能right比left小。

全部评论

相关推荐

02-08 20:56
已编辑
南京工业大学 Java
在等offer的比尔很洒脱:我也是在实习,项目先不说,感觉有点点小熟悉,但是我有点疑问,这第一个实习,公司真的让实习生去部署搭建和引入mq之类的吗,是不是有点过于信任了,我实习过的两个公司都是人家正式早搭好了,根本摸不到部署搭建的
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
牛客网
牛客企业服务