File tree Expand file tree Collapse file tree 3 files changed +58
-0
lines changed
solution/0900-0999/0918.Maximum Sum Circular Subarray Expand file tree Collapse file tree 3 files changed +58
-0
lines changed Original file line number Diff line number Diff line change @@ -108,6 +108,27 @@ class Solution {
108
108
}
109
109
```
110
110
111
+ ### ** TypeScript**
112
+
113
+ ``` ts
114
+ function maxSubarraySumCircular(nums : number []): number {
115
+ let pre1 = nums [0 ], pre2 = nums [0 ];
116
+ let ans1 = nums [0 ], ans2 = nums [0 ];
117
+ let sum = nums [0 ];
118
+
119
+ for (let i = 1 ; i < nums .length ; ++ i ) {
120
+ let cur = nums [i ];
121
+ sum += cur ;
122
+ pre1 = Math .max (pre1 + cur , cur );
123
+ ans1 = Math .max (pre1 , ans1 );
124
+
125
+ pre2 = Math .min (pre2 + cur , cur );
126
+ ans2 = Math .min (pre2 , ans2 );
127
+ }
128
+ return ans1 > 0 ? Math .max (ans1 , sum - ans2 ) : ans1 ;
129
+ };
130
+ ```
131
+
111
132
### ** C++**
112
133
113
134
``` cpp
Original file line number Diff line number Diff line change @@ -167,6 +167,27 @@ class Solution {
167
167
}
168
168
```
169
169
170
+ ### ** TypeScript**
171
+
172
+ ``` ts
173
+ function maxSubarraySumCircular(nums : number []): number {
174
+ let pre1 = nums [0 ], pre2 = nums [0 ];
175
+ let ans1 = nums [0 ], ans2 = nums [0 ];
176
+ let sum = nums [0 ];
177
+
178
+ for (let i = 1 ; i < nums .length ; ++ i ) {
179
+ let cur = nums [i ];
180
+ sum += cur ;
181
+ pre1 = Math .max (pre1 + cur , cur );
182
+ ans1 = Math .max (pre1 , ans1 );
183
+
184
+ pre2 = Math .min (pre2 + cur , cur );
185
+ ans2 = Math .min (pre2 , ans2 );
186
+ }
187
+ return ans1 > 0 ? Math .max (ans1 , sum - ans2 ) : ans1 ;
188
+ };
189
+ ```
190
+
170
191
### ** C++**
171
192
172
193
``` cpp
Original file line number Diff line number Diff line change
1
+ function maxSubarraySumCircular ( nums : number [ ] ) : number {
2
+ let pre1 = nums [ 0 ] , pre2 = nums [ 0 ] ;
3
+ let ans1 = nums [ 0 ] , ans2 = nums [ 0 ] ;
4
+ let sum = nums [ 0 ] ;
5
+
6
+ for ( let i = 1 ; i < nums . length ; ++ i ) {
7
+ let cur = nums [ i ] ;
8
+ sum += cur ;
9
+ pre1 = Math . max ( pre1 + cur , cur ) ;
10
+ ans1 = Math . max ( pre1 , ans1 ) ;
11
+
12
+ pre2 = Math . min ( pre2 + cur , cur ) ;
13
+ ans2 = Math . min ( pre2 , ans2 ) ;
14
+ }
15
+ return ans1 > 0 ? Math . max ( ans1 , sum - ans2 ) : ans1 ;
16
+ } ;
You can’t perform that action at this time.
0 commit comments