↓快轉到主要內容
  1. LeetCode/

LeetCode 3708: Longest Fibonacci Subarray

·1 分鐘· ·
LeetCode Medium Array
Wei Yi Chung
作者
Wei Yi Chung
Working at the contributing of open source, distributed systems, and data engineering.
目錄

基本資料
#

難易度: medium 第一次嘗試:2025-10-11

  • 提交紀錄:Accepted(一次通過)

解題思路
#

連續的一段,只要記目前這段的長度(Array 模板一)。任兩個相鄰的數都能開始一段新的費氏子陣列,所以斷掉時長度回到 2,不是 1。

我的解法
#

class Solution:
    def longestSubarray(self, nums: List[int]) -> int:
        n = len(nums)
        if n <= 2:
            return n
        cur = best = 2
        for i in range(2, n):
            cur = cur + 1 if nums[i] == nums[i - 1] + nums[i - 2] else 2
            best = max(best, cur)
        return best

複雜度
#

時間 O(n),空間 O(1)。

要特別避免的錯誤
#

  • 斷掉時長度是 2,因為最後兩個數可以當新的開頭。
  • 長度不到 3 時直接回傳長度。

面試口說整理
#

我從第三個數開始掃,符合前兩個相加就延長目前長度,否則從最後兩個數重新開始,長度變成 2。時間 O(n)。

相關文章

LeetCode 3689: Maximum Total Subarray Value I
·1 分鐘
LeetCode Medium Greedy Array
LeetCode 3689 解題筆記:同一個子陣列可以重複選,整個陣列的最大減最小就是單一子陣列的最大值,選 k 次
LeetCode 2294: Partition Array Such That Maximum Difference Is K
·1 分鐘
LeetCode Medium Greedy Sorting Array
LeetCode 2294 解題筆記:子序列不在乎順序,排序後從最小的開始,每組盡量往右延伸到超過 min + k 為止
LeetCode 1493: Longest Subarray of 1's After Deleting One Element
·1 分鐘
LeetCode Medium Sliding-Window Dynamic-Programming Array
LeetCode 1493 解題筆記:找「最多 1 個 0」的最長視窗,因為一定要刪一個元素,答案是視窗長度減 1
LeetCode 3195: Find the Minimum Area to Cover All Ones I
·1 分鐘
LeetCode Medium Array Matrix
LeetCode 3195 解題筆記:記錄 1 出現的最上、最下、最左、最右位置,矩形面積就是高乘寬
LeetCode 3649: Number of Perfect Pairs
·1 分鐘
LeetCode Medium Two-Pointers Math Sorting Array
LeetCode 3649 解題筆記:把條件化簡成「較大的絕對值 <= 2 × 較小的絕對值」,排序絕對值後用雙指針計數
LeetCode 1222: Queens That Can Attack the King
·1 分鐘
LeetCode Medium Array Matrix Simulation
LeetCode 1222 解題筆記:從國王往八個方向一步一步走,每個方向第一個遇到的皇后就能攻擊;皇后放進集合方便查詢