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.