【编程】【leetcode】523. Continuous Subarray Sum

来源:互联网 发布:php 跨平台 编辑:程序博客网 时间:2024/05/22 04:50


public class Solution {    public boolean checkSubarraySum(int[] nums, int k) {        int l=nums.length;        //如果区分第一个元素不为k 那么就可以根据sum%k来判断是否返回true        //反之 根据sum%k存在一定的缺陷 6 1 1 1        //因此为了统一  不在根据sum 而都根据余数是否有相等        int modsum=0;        HashMap<Integer,Integer> hashMap=new HashMap<Integer, Integer>();        hashMap.put(0,-1);//之所以要放这个是为了防止出现1 1  k==2的这种情况        for (int i = 0; i <l ; i++) {            modsum+=nums[i];            if(k!=0){  //可能是负数倍数  如果k==0 那么因为不会出现相同的余数 最后返回结果为false                modsum%=k;            }            if (hashMap.get(modsum)!=null){                if (i-hashMap.get(modsum)>1){//不能等于1   因为可能出现23 2 6等类似情况                    return true;                }else{                    continue;                }            }else{                hashMap.put(modsum,i);            }        }        return false;    }}


0 0
原创粉丝点击