523.连续的子数组和

题目描述:

image.png


解:

前缀和+hashSet

  1. class Solution {
  2. public boolean checkSubarraySum(int[] nums, int k) {
  3. int n = nums.length;
  4. int[] sum = new int[n+1];
  5. for (int i = 1; i <= n; i++) {
  6. sum[i] = sum[i-1] + nums[i-1];
  7. }
  8. Set<Integer> set = new HashSet<Integer>();
  9. for(int i=2; i<=n; i++) {
  10. set.add(sum[i-2] % k);
  11. if(set.contains(sum[i] % k)) return true;
  12. }
  13. return false;
  14. }
  15. }