File tree Expand file tree Collapse file tree 6 files changed +170
-4
lines changed
solution/0300-0399/0370.Range Addition Expand file tree Collapse file tree 6 files changed +170
-4
lines changed Original file line number Diff line number Diff line change 3333[-2,0,3,5,3]
3434</pre >
3535
36-
3736## 解法
3837
3938<!-- 这里可写通用的实现逻辑 -->
4039
40+ 差分数组。
41+
4142<!-- tabs:start -->
4243
4344### ** Python3**
4445
4546<!-- 这里可写当前语言的特殊实现逻辑 -->
4647
4748``` python
48-
49+ class Solution :
50+ def getModifiedArray (self , length : int , updates : List[List[int ]]) -> List[int ]:
51+ delta = [0 ] * length
52+ for start, end, inc in updates:
53+ delta[start] += inc
54+ if end + 1 < length:
55+ delta[end + 1 ] -= inc
56+ for i in range (1 , length):
57+ delta[i] += delta[i - 1 ]
58+ return delta
4959```
5060
5161### ** Java**
5262
5363<!-- 这里可写当前语言的特殊实现逻辑 -->
5464
5565``` java
66+ class Solution {
67+ public int [] getModifiedArray (int length , int [][] updates ) {
68+ int [] delta = new int [length];
69+ for (int [] e : updates) {
70+ delta[e[0 ]] += e[2 ];
71+ if (e[1 ] + 1 < length) {
72+ delta[e[1 ] + 1 ] -= e[2 ];
73+ }
74+ }
75+ for (int i = 1 ; i < length; ++ i) {
76+ delta[i] += delta[i - 1 ];
77+ }
78+ return delta;
79+ }
80+ }
81+ ```
82+
83+ ### ** C++**
84+
85+ ``` cpp
86+ class Solution {
87+ public:
88+ vector<int > getModifiedArray(int length, vector<vector<int >>& updates) {
89+ vector<int > delta(length);
90+ for (auto e : updates) {
91+ delta[ e[ 0]] += e[ 2] ;
92+ if (e[ 1] + 1 < length) delta[ e[ 1] + 1] -= e[ 2] ;
93+ }
94+ for (int i = 1; i < length; ++i) delta[ i] += delta[ i - 1] ;
95+ return delta;
96+ }
97+ };
98+ ```
5699
100+ ### **Go**
101+
102+ ```go
103+ func getModifiedArray(length int, updates [][]int) []int {
104+ delta := make([]int, length)
105+ for _, e := range updates {
106+ delta[e[0]] += e[2]
107+ if e[1]+1 < length {
108+ delta[e[1]+1] -= e[2]
109+ }
110+ }
111+ for i := 1; i < length; i++ {
112+ delta[i] += delta[i-1]
113+ }
114+ return delta
115+ }
57116```
58117
59118### ** ...**
Original file line number Diff line number Diff line change 3535 <li><code>-1000 <= inc<sub>i</sub> <= 1000</code></li>
3636</ul >
3737
38-
3938## Solutions
4039
4140<!-- tabs:start -->
4241
4342### ** Python3**
4443
4544``` python
46-
45+ class Solution :
46+ def getModifiedArray (self , length : int , updates : List[List[int ]]) -> List[int ]:
47+ delta = [0 ] * length
48+ for start, end, inc in updates:
49+ delta[start] += inc
50+ if end + 1 < length:
51+ delta[end + 1 ] -= inc
52+ for i in range (1 , length):
53+ delta[i] += delta[i - 1 ]
54+ return delta
4755```
4856
4957### ** Java**
5058
5159``` java
60+ class Solution {
61+ public int [] getModifiedArray (int length , int [][] updates ) {
62+ int [] delta = new int [length];
63+ for (int [] e : updates) {
64+ delta[e[0 ]] += e[2 ];
65+ if (e[1 ] + 1 < length) {
66+ delta[e[1 ] + 1 ] -= e[2 ];
67+ }
68+ }
69+ for (int i = 1 ; i < length; ++ i) {
70+ delta[i] += delta[i - 1 ];
71+ }
72+ return delta;
73+ }
74+ }
75+ ```
76+
77+ ### ** C++**
78+
79+ ``` cpp
80+ class Solution {
81+ public:
82+ vector<int > getModifiedArray(int length, vector<vector<int >>& updates) {
83+ vector<int > delta(length);
84+ for (auto e : updates) {
85+ delta[ e[ 0]] += e[ 2] ;
86+ if (e[ 1] + 1 < length) delta[ e[ 1] + 1] -= e[ 2] ;
87+ }
88+ for (int i = 1; i < length; ++i) delta[ i] += delta[ i - 1] ;
89+ return delta;
90+ }
91+ };
92+ ```
5293
94+ ### **Go**
95+
96+ ```go
97+ func getModifiedArray(length int, updates [][]int) []int {
98+ delta := make([]int, length)
99+ for _, e := range updates {
100+ delta[e[0]] += e[2]
101+ if e[1]+1 < length {
102+ delta[e[1]+1] -= e[2]
103+ }
104+ }
105+ for i := 1; i < length; i++ {
106+ delta[i] += delta[i-1]
107+ }
108+ return delta
109+ }
53110```
54111
55112### ** ...**
Original file line number Diff line number Diff line change 1+ class Solution {
2+ public:
3+ vector<int > getModifiedArray (int length, vector<vector<int >>& updates) {
4+ vector<int > delta (length);
5+ for (auto e : updates) {
6+ delta[e[0 ]] += e[2 ];
7+ if (e[1 ] + 1 < length) delta[e[1 ] + 1 ] -= e[2 ];
8+ }
9+ for (int i = 1 ; i < length; ++i) delta[i] += delta[i - 1 ];
10+ return delta;
11+ }
12+ };
Original file line number Diff line number Diff line change 1+ func getModifiedArray (length int , updates [][]int ) []int {
2+ delta := make ([]int , length )
3+ for _ , e := range updates {
4+ delta [e [0 ]] += e [2 ]
5+ if e [1 ]+ 1 < length {
6+ delta [e [1 ]+ 1 ] -= e [2 ]
7+ }
8+ }
9+ for i := 1 ; i < length ; i ++ {
10+ delta [i ] += delta [i - 1 ]
11+ }
12+ return delta
13+ }
Original file line number Diff line number Diff line change 1+ class Solution {
2+ public int [] getModifiedArray (int length , int [][] updates ) {
3+ int [] delta = new int [length ];
4+ for (int [] e : updates ) {
5+ delta [e [0 ]] += e [2 ];
6+ if (e [1 ] + 1 < length ) {
7+ delta [e [1 ] + 1 ] -= e [2 ];
8+ }
9+ }
10+ for (int i = 1 ; i < length ; ++i ) {
11+ delta [i ] += delta [i - 1 ];
12+ }
13+ return delta ;
14+ }
15+ }
Original file line number Diff line number Diff line change 1+ class Solution :
2+ def getModifiedArray (self , length : int , updates : List [List [int ]]) -> List [int ]:
3+ delta = [0 ] * length
4+ for start , end , inc in updates :
5+ delta [start ] += inc
6+ if end + 1 < length :
7+ delta [end + 1 ] -= inc
8+ for i in range (1 , length ):
9+ delta [i ] += delta [i - 1 ]
10+ return delta
You can’t perform that action at this time.
0 commit comments