Lập Trình Viên Số Khổ
Senior Member
tui thấy Violet_7 giải đúng rùi, đây là phiên bản pythonCó bài này cho anh em thử
Đi siêu thị mua gạo, có 1 dãy các túi gạo với trọng lượng khác nhau. Bạn muốn mua 1 dãy perfect sao cho cứ túi này thì bằng bình phương trọng lượng túi trước. Tìm dãy dài nhất có thể
Ví dụ: Input: 3 9 2 4 16
Dãy nhiều các thím có thể mua dc là 2 4 16 -> output = 3
Ràng buộc: Input array size = n < 10^5
trọng lượng túi gạo < 10^6
Ko có link đâu, nên các thím tự tạo test case cho pass corner case nhé![]()
Python:
from collections import defaultdict
def maxBags(arr):
hm = defaultdict(int)
for num in arr:
hm[num] += 1
result = 0
for num in arr:
if num > 1000:
continue
next = num ** 2
if hm[next] == 0:
continue
hm[next] += hm[num]
result = max(result, hm[next])
return result