Foto
haz clic para mostrar
haz clic para mostrar
Foto
haz clic para mostrar
haz clic para mostrar
Foto
haz clic para mostrar
749 · haz clic para mostrar
Deloitte | COGNIZANT | IBM | CAPGEMINI
def legoString(input1, input2, input3):
wall = input1
n = input2
blocks = input3
if not wall or not blocks:
return [-1]
word_len = len(blocks[0])
if len(wall) < word_len:
return [-1]
from collections import Counter
block_count = Counter(blocks)
result = []
for i in range(len(wall) - word_len + 1):
for used in range(2, n+1):
length = used * word_len
if i + length > len(wall):
break
substring = wall[i:i+length]
words = [substring[j:j+word_len] for j in range(0, length, word_len)]
count_words = Counter(words)
if all(count_words[w] <= block_count[w] for w in count_words) and sum(count_words.values()) == used:
result.append(i)
return sorted(set(result)) if result else [-1]
//Lego strings✅✅
VIRTUSA✅
729 · 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 · from collections import deque
def minMovesToHospital(cls, input1, input2, input3):
N = input1
E = input2
K = input3 - 1
if E[K] == 0:
return 0
visited = [False] * N
q = deque([(K, 0)])
visited[K] = True
while q:
idx, moves = q.popleft()
for nxt in [idx + E[idx], idx - E[idx]]:
if 0 <= nxt < N and not visited[nxt]:
if E[nxt] == 0:
return moves + 1
visited[nxt] = True
q.append((nxt, moves + 1))
return -1
//MINIMUM MOVES✅
VIRTUSA✅
661 ·