Given an integer array nums and an integer k, return true if nums has a continuous subarray of size at least two whose elements sum up to a multiple of k, or false otherwise.
public boolean checkSubarraySum(int[] nums, int k) {
int currentSum = 0;
Map<Integer, Integer> remainders = new HashMap<Integer, Integer>();
if(k == 0) return false;
for(int i=0; i < nums.length; i++) {
currentSum += nums[i];
if(currentSum%k == 0) return true;
if(remainders.containsKey(currentSum%k))
if(i - remainders.get(currentSum%k) > 1)return true;
remainders.put(currentSum%k, i);
}
return false;
}
public int fibon(int n) {
if (n<0) return -1;
if (n == 1 || n == 0) return 1;
return fibon(n-1) + fibon(n-2);
}
public int sums(int[] seq, int sum) {
int csum = 0, right = 0, left = 0;
boolean notfound = true;
while(right < seq.length && notfound) {
for(int i = right; i < seq.length; i++) {
csum +=seq[i];
if(csum == sum) {left = i; notfound=false; break;}
if(csum > sum) { csum=0; break;}
}
csum=0;
right++;
}
if(notfound) {right=1; left = -1; }
int[] res = Arrays.copyOfRange(seq,right-1, left+1);
System.out.println(Arrays.toString(res));
System.out.println(right-1);
System.out.println(left);
System.out.println(notfound);
return 0;
}