leetcode 區間加法

2021-10-09 10:40:32 字數 1224 閱讀 4571

假設你有乙個長度為 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...