def minSubarray(nums, p):
"""
:type nums: List[int]
:type p: int
:rtype: int
"""
sum_arr = sum(nums)
arr_len = len(nums)
subarr_sum_dict = dict()
possible_subarr = []
if sum_arr % p == 0:
return 0
for i in range(0, arr_len):
for j in range(i+1, arr_len):
if (i, j-1) in subarr_sum_dict:
tmp = sum_arr - (subarr_sum_dict[(i, j-1)] + nums[j])
else:
subarr_sum_dict[(i, j-1)] = sum(nums[i:j-1])
tmp2 = subarr_sum_dict[(i, j-1)] + nums[j]
tmp = sum_arr - tmp2
subarr_sum_dict[(i, j)] = subarr_sum_dict[(i, j-1)] + nums[j]
if tmp % p == 0:
print(tmp)
print(nums[i:j])
possible_subarr.append((i, j))
print(possible_subarr)
min_len = arr_len
for i, j in possible_subarr:
if (j - i) + 1 < min_len:
min_len = (j - i) + 1
if min_len == arr_len:
return -1
else:
return min_len
# nums = [3,1,4,2], p = 6
# nums = [6,3,5,2], p = 9
# nums = [1,2,3], p = 7
nums = [6,3,5,2]
p = 9
print(minSubarray(nums, p))