Quick actions

cmd+k|ctrl+k

Navigation

Languages

Leetcode problem 1590

Snippet info

Language

Python

Visibility

public

Author

vminotra

Created

2021-02-06T19:19:58Z

Updated

2021-02-06T19:51:26Z

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))
INFO