-2

I am using below code and it passes all the test case


class Solution:
    def canPartition(self, nums: List[int]) -> bool:
        target=0       
        for i in nums:
            target=target+i
        if(target%2):
            return False
        #target=int(target/2)
        t=[ [1]*((target//2)+1) for _ in range(len(nums))]
        #print(t)
        target=int(target/2)
        print(target,len(nums))
        def equalSum(i,sum):
            if(sum==target):
                return True
            elif(i>(len(nums)-1) or sum>target):
                return False
            elif(t[i][sum]!=1):
                return t[i][sum]
            else:
                t[i][sum]=equalSum(i+1,nums[i]+sum) or equalSum(i+1,sum)
                return t[i][sum]
        return equalSum(0,0)

but I am unable to get why if I change

t=[ [1]*((target//2)+1) for _ in range(len(nums))] 

with

t=[[-1]*(target//2+1)]*len(nums)

it only passes 122 cases, I believe both statement produces same array, so why is that so?

Also if I change -1 to 0 in the solution code, then it will give me time limit exceed error but it passes with -1 or 1.

Surbhi Jain
  • 132
  • 1
  • 6

0 Answers0