สมมติว่ามีรายการตัวเลขบวกเพิ่มขึ้นเคร่งครัด nums ต้องการหาความยาว subsequence ยาวสุด (ขั้นต่ำ 3) ที่ A[i] = A[i-1] + A[i-2] สำหรับทุก i > 1
ตัวอย่าง: nums = [1,2,3,4,5,6,7,8,9,10,11,12,13,14] ผลลัพธ์ 6 คือ [1,2,3,5,8,13]
ขั้นตอนการแก้ปัญหา
A = nums, n = len(A), maxLen = 0S = set(A)- วน
iจาก 0 ถึงn-1:- วน
jจากi+1ถึงn-1:x = A[j], y = A[i] + A[j], length = 2- ขณะ
y in S:z = x + y, x = y, y = z, length += 1maxLen = max(maxLen, length)
- วน
- ถ้า
maxLen > 2คืนmaxLenมิฉะนั้นคืน 0
ตัวอย่างโค้ด
class Solution:
def solve(self, nums):
A = nums
n = len(A)
maxLen = 0
S = set(A)
for i in range(0, n):
for j in range(i + 1, n):
x = A[j]
y = A[i] + A[j]
length = 2
while y in S:
z = x + y
x = y
y = z
length += 1
maxLen = max(maxLen, length)
if maxLen > 2:
return maxLen
else:
return 0
ob = Solution()
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
print(ob.solve(nums))
อินพุต
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
เอาต์พุต
6