Deloitte | COGNIZANT | IBM | CAPGEMINI
def maxSumOfNonAdjacentNodes(cls, input1, input2):
a = input2
n = len(a)
if n == 0:
return 0
eff = [0]*n
for i in range(n):
penalty = a[i-1] if i > 0 and a[i-1] < 0 else 0
eff[i] = a[i] + penalty
def nz(x):
return x if x > 0 else 0
if n == 1:
return nz(eff[0])
if n == 2:
return max(nz(eff[0]), nz(eff[1]))
prev2 = nz(eff[0])
prev1 = max(prev2, nz(eff[1]))
for i in range(2, n):
take = prev2 + nz(eff[i])
skip = prev1
cur = take if take > skip else skip
prev2, prev1 = prev1, cur
return prev1
//MAX REWARD POINTS✅
VIRTUSA✅
667 ·