主题https://leet code.com/problems/continuous-subarray-sum /
因为想不出O(N )的方法来解决问题,所以直接回答了:
参考1【宫水三叶】推广到求方案数的问题
参考2 )证明动态图)把正题给你吃完
中心思想:
草稿:
class solution { publicbooleanchecksubarraysum (int [ ] nums,int k ) { int[] sum=new int[nums.length]; sum[0]=nums[0]; for(intI=1; i nums.length; I ) ) sum(I )=sum(I-1 ) nums ); } HashMapInteger,Integer map=new HashMap (; //(从0开始的前缀和%k,对应的结束下标) map.put(0,-1); //e.g.nums=[ 2,4,7 ] for (inti=0; i nums.length; I ) if(map.containskey(sum[I]%k ) ) if ) I-map.get ) sum[I]%k )=2)返回真; }else{map.put(sum[I]%k,I ); } } return false; }