题目
题意:给出一个数组a[],判断添加多少个数可以使得该数组没有为0的段
代码:
package 练习;
import java.io.*;
import java.math.*;
import java.util.*;
public class Main {
static Scanner sc=new Scanner(System.in);
public static void main(String[] args) {
int n=1;
for(int i=0;i<n;i++) {
show();
}
}
private static void show() {
int n=sc.nextInt();
Set<Long>set=new HashSet<>();//建立一个Set判断是否有相同的数,如果有则说明有为0的段,需要添加一个大数解决问题
set.add(0L);
long s=0;
int ans=0;
for(int i=0;i<n;i++) {
int x=sc.nextInt();
s+=x;
if(set.contains(s)) {
ans++;
set=new HashSet<>();//更新set
set.add(0L);
s=x;
}
set.add(s);
}
System.out.println(ans);
}
}