- python 中以
list
初始化二維陣列- 錯誤方式
[[v]*n]*m
,每個子列[v]*n
接指向同樣記憶體
- 正確方式
[[v]*n for _ in range(m)]
- 錯誤方式
- 以
bisect.bisect
找出新插入值newInterval
的start
於intervals
中位於的位置idx
- 判斷
intervals[idx: ]
中有多少 elements 的起始值start_i
小於newInterval
的end,
- 避免使用的索引
overlap_idx
超出intervals
的數量, - 紀錄由
idx
算起需要被移除的 elements 數量remove_cnt
- 當
intervals[overlap_idx]
的end_overlap_idx
大於等於newInterval
的end
時,結束判斷,並記錄新插入區間的結尾值end_overlap_idx
- 避免使用的索引
- 當插入位置
idx
不為第一個時,檢查前一個 element,intervals[idx - 1]
,的end
是否大於等於newInterval
的start
- 成立的話新插入的起始值更新為
intervals[idx - 1]
的start
- 判斷
intervals[idx - 1]
的end
是否大於newInterval
的end
- 成立的話新插入的結尾值更新為
intervals[idx - 1]
的end
- 成立的話新插入的結尾值更新為
- 刪除
intervals
中由idx
算起的remove_cnt
個 element,以及第idx-1
個 element - 在
idx-1
的位置插入新 element
- 判斷
- 不成立的話刪除
intervals
中由idx
算起的remove_cnt
個 element,並在idx
的位置插入新 element
- 成立的話新插入的起始值更新為
- 依序判斷進來的字元為數字、運算子或括號
- 如為數字,先暫存其值,等遇到運算子或括號時再進行處理
- 如為運算子,則計算在其之前的運算式
- 當前累計的計算結果為 l-value,暫存的值為 r-value,暫存的運算子為 r-value 的正負號
- 計算後將暫存的運算子更新為當前的運算子,暫存的值歸零
- 如為左括號,將當前計算結果及暫存的運算子存入 stack,並初始化當前計算結果與暫存的運算子
- 如為右括號,計算在其之前的運算式
- 將結果做為 r-value,並取出 stack 最上層的運算子和先前結果,計算出當前結果值
- 以累計結果、暫存值、暫存運算子計算最後結果,再將暫存的值歸零
- 初始化儲存結算結果的 stack,以及暫存的運算子為 '+'
- 依序判斷進來的字元為數字或運算子
- 如為數字則暫存其值
- 如為運算子
- 依照暫存的運算子決定行為
- 暫存運算子為 '+' 或 '-',將當前暫存值轉成對應的正負數,存入 stack
- 暫存運算子為 '*' 或 '/',從 stack 取值與暫存值進行運算,將結果存入 stack
- 以當前運算子更新暫存的運算子,並初始化暫存值
- 依照暫存的運算子決定行為
- 依照暫存運算子計算最後的暫存值
- 將 stack 的值加總後即為最終結果
- 由最後三個 element 開始,判斷前兩項的差值是否等於後兩項的差值
- 成立的話則紀錄以第一項的索引為首,連續三個 element 為等差數列,數量為 1
- 查詢以第二項的索引為首時,是否亦有等差數列,成立的話更新以第一項的索引為首的等差數列的數量
- 成立的話則紀錄以第一項的索引為首,連續三個 element 為等差數列,數量為 1
- 累加以每個 element 為首時的等差數列的數量
- 以 DP 的方式規劃,先記錄數列
nums
中的任意兩值,nums[i]
及nums[j]
,是否存在第三值nums[k]
,使其成為等差子數列,其中k>j>i
- 不要對輸入數列
nums
做排序 - 對於一組
nums[i]
及nums[j]
,k
可能不只一種 - 分別記錄間格
spacing
、k
的值index
以及數量counter
- 不要對輸入數列
- 從可能的索引最大值開始判斷,是否存在以
nums[i]
及nums[j]
起始,長度大於 3 的等差子數列- 成立的話,更新以
nums[i]
及nums[j]
起始的等差子數列的數量counter
- 成立的話,更新以
- 累加以數列
nums
中的任意兩值,nums[i]
及nums[j]
起始的等差子數列的數量
- 建立字串 "123456789"
- 所有擁有 sequential digits 的整數皆為此字串的子字串
- 子字串的長度由 2 到 9 依序進行判斷
- 子字串的起始 digit 由 1 到 8 依序進行判斷
- 如果當前值大於 high ,則當前累計結果為答案
- 如果當前值大於等於 low,小於等於 high,將當前值記錄進累計結果
- 如果當前值小於 low,繼續下一個判斷
- 回傳累計結果