523. Continuous Subarray Sum
1 //New presum 2 class Solution { 3 public boolean checkSubarraySum(int[] nums, int k) { 4 if(k == 0){ 5 for(int i = 1; i < nums.length; i++){ 6 if(nums[i] == 0 && nums[i-1] == 0) return true; 7 } 8 return false; 9 } 10 int[] presum = new int[nums.length + 1]; 11 for(int i = 0; i < nums.length; i++){ 12 presum[i+1] = presum[i] + nums[i]; 13 } 14 for(int i = 0; i <= nums.length-2; i++){ 15 for(int j = i+2; j <= nums.length; j++){ 16 if((presum[j] - presum[i]) % k == 0){ 17 return true; 18 } 19 } 20 } 21 return false; 22 23 } 24 } 25 26 //Old 27 class Solution { 28 public boolean checkSubarraySum(int[] nums, int k) { 29 30 List<Integer> list = new ArrayList<>(); 31 for(int i = 0; i < nums.length; i++){ 32 for(int j = 0; j < list.size(); j++){ 33 // System.out.println(list.get(j) + nums[i]); 34 if((k == 0 && list.get(j) + nums[i] == 0) || (k != 0 && (list.get(j) + nums[i]) % k == 0)){ 35 return true; 36 }else{ 37 list.set(j, list.get(j) + nums[i]); 38 } 39 } 40 list.add(nums[i]); 41 } 42 return false; 43 44 } 45 }