Skip to content

Commit 0f41fea

Browse files
authored
feat: add typescript solution to lc problem: No.0918.Maximum Sum Circular Subarray (doocs#510)
1 parent 531383c commit 0f41fea

File tree

3 files changed

+58
-0
lines changed

3 files changed

+58
-0
lines changed

solution/0900-0999/0918.Maximum Sum Circular Subarray/README.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,27 @@ class Solution {
108108
}
109109
```
110110

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+
111132
### **C++**
112133

113134
```cpp

solution/0900-0999/0918.Maximum Sum Circular Subarray/README_EN.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,27 @@ class Solution {
167167
}
168168
```
169169

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+
170191
### **C++**
171192

172193
```cpp
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
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+
};

0 commit comments

Comments
 (0)