假設你有乙個長度為 n 的陣列,初始情況下所有的數字均為 0,你將會被給出 k 個更新的操作。
其中,每個操作會被表示為乙個三元組:[startindex, endindex, inc],你需要將子陣列 a[startindex … endindex](包括 startindex 和 endindex)增加 inc。
請你返回 k 次操作後的陣列。
示例:
輸入: length = 5, updates = [[1,3,2],[2,4,3],[0,2,-2]]解釋:輸出: [-2,0,3,5,3]
初始狀態:[0,0,0,0,0]
進行了操作 [1,3,2] 後的狀態:
[0,2,2,2,0]
進行了操作 [2,4,3] 後的狀態:
[0,2,5,5,3]
進行了操作 [0,2,-2] 後的狀態:
[-2,0,3,5,3]
class
solution
:def
getmodifiedarray
(self, length:
int, updates: list[list[
int]])
-> list[
int]
: ans =[0
for _ in
range
(length+1)
]# 用於儲存每個操作的資訊
for up in updates:
begin,end,num = up[0]
,up[1]
,up[2]
# 對每個操作的起始位置和結束位置進行記錄
ans[begin]
+= num
ans[end+1]
-= num
temp = ans[0]
# temp用於儲存ans[0-n]的總算子累加和
for i in
range(1
,length)
:if ans[i]!=0
: temp += ans[i]
ans[i]
= temp
return ans[:-
1]
時間複雜度為o(n+k),空間複雜度為o(1); 370 區間加法
題目描述 假設你有乙個長度為 n 的陣列,初始情況下所有的數字均為 0,你將會被給出 k 個更新的操作。其中,每個操作會被表示為乙個三元組 startindex,endindex,inc 你需要將子陣列 a startindex endindex 包括 startindex 和 endindex 增...
線段樹的區間加法與區間乘法
題目描述 如題,已知乙個數列,你需要進行下面兩種操作 將某區間每乙個數加上 kk。求出某區間每乙個數的和。輸入格式 第一行包含兩個整數 n,mn,m,分別表示該數列數字的個數和操作的總個數。第二行包含 nn 個用空格分隔的整數,其中第 ii 個數字表示數列第 ii 項的初始值。接下來 mm 行每行包...
LeetCode 區間合併
區間合併 給出乙個區間的集合,請合併所有重疊的區間。示例 1 輸入 1,3 2,6 8,10 15,18 輸出 1,6 8,10 15,18 解釋 區間 1,3 和 2,6 重疊,將它們合併為 1,6 示例 2 輸入 1,4 4,5 輸出 1,5 解釋 區間 1,4 和 4,5 可被視為重疊區間。i...