fork download
  1. import java.util.HashSet;
  2. import java.util.Scanner;
  3.  
  4. public class Main {
  5.  
  6. public static void main(String[] args) {
  7. Scanner scanner = new Scanner(System.in);
  8. int n = scanner.nextInt(); // 读取数组的大小
  9. int[] arr = new int[n];
  10.  
  11. for (int i = 0; i < n; i++) {
  12. arr[i] = scanner.nextInt(); // 读取数组的元素
  13. }
  14.  
  15. // 判断是否存在两个子数组的和相等
  16. System.out.println(findSubsetSum(arr));
  17. }
  18.  
  19. // 查找是否存在两个子数组的和相等
  20. public static int findSubsetSum(int[] arr) {
  21. HashSet<Integer> sumSet = new HashSet<>();
  22. int currentSum = 0;
  23.  
  24. // 枚举所有前缀和
  25. for (int i = 0; i < arr.length; i++) {
  26. currentSum += arr[i]; // 累加当前的和
  27.  
  28. // 如果该和已经出现过,则返回2
  29. if (sumSet.contains(currentSum)) {
  30. return 2; // 存在两个子数组的和相等
  31. }
  32. sumSet.add(currentSum);
  33. }
  34.  
  35. // 如果没有重复的和,返回1
  36. return 1;
  37. }
  38. }
  39.  
Success #stdin #stdout 0.15s 54688KB
stdin
4
22 11 66 99
stdout
1