From 44860f8b0f02d0d91d49ca8cc7ef8d22c9af9a35 Mon Sep 17 00:00:00 2001 From: zhaocchen Date: Tue, 13 Jul 2021 22:16:37 +0800 Subject: [PATCH] feat: add typescript solution to lc problem: No.0918.Maximum Sum Circular Subarray --- .../README.md | 21 +++++++++++++++++++ .../README_EN.md | 21 +++++++++++++++++++ .../Solution.ts | 16 ++++++++++++++ 3 files changed, 58 insertions(+) create mode 100644 solution/0900-0999/0918.Maximum Sum Circular Subarray/Solution.ts diff --git a/solution/0900-0999/0918.Maximum Sum Circular Subarray/README.md b/solution/0900-0999/0918.Maximum Sum Circular Subarray/README.md index a6f5f19935d89..4859410e9831f 100644 --- a/solution/0900-0999/0918.Maximum Sum Circular Subarray/README.md +++ b/solution/0900-0999/0918.Maximum Sum Circular Subarray/README.md @@ -108,6 +108,27 @@ class Solution { } ``` +### **TypeScript** + +```ts +function maxSubarraySumCircular(nums: number[]): number { + let pre1 = nums[0], pre2 = nums[0]; + let ans1 = nums[0], ans2 = nums[0]; + let sum = nums[0]; + + for (let i = 1; i < nums.length; ++i) { + let cur = nums[i]; + sum += cur; + pre1 = Math.max(pre1 + cur, cur); + ans1 = Math.max(pre1, ans1); + + pre2 = Math.min(pre2 + cur, cur); + ans2 = Math.min(pre2, ans2); + } + return ans1 > 0 ? Math.max(ans1, sum - ans2) : ans1; +}; +``` + ### **C++** ```cpp diff --git a/solution/0900-0999/0918.Maximum Sum Circular Subarray/README_EN.md b/solution/0900-0999/0918.Maximum Sum Circular Subarray/README_EN.md index 00228a07620d6..bd5b10a0013e8 100644 --- a/solution/0900-0999/0918.Maximum Sum Circular Subarray/README_EN.md +++ b/solution/0900-0999/0918.Maximum Sum Circular Subarray/README_EN.md @@ -167,6 +167,27 @@ class Solution { } ``` +### **TypeScript** + +```ts +function maxSubarraySumCircular(nums: number[]): number { + let pre1 = nums[0], pre2 = nums[0]; + let ans1 = nums[0], ans2 = nums[0]; + let sum = nums[0]; + + for (let i = 1; i < nums.length; ++i) { + let cur = nums[i]; + sum += cur; + pre1 = Math.max(pre1 + cur, cur); + ans1 = Math.max(pre1, ans1); + + pre2 = Math.min(pre2 + cur, cur); + ans2 = Math.min(pre2, ans2); + } + return ans1 > 0 ? Math.max(ans1, sum - ans2) : ans1; +}; +``` + ### **C++** ```cpp diff --git a/solution/0900-0999/0918.Maximum Sum Circular Subarray/Solution.ts b/solution/0900-0999/0918.Maximum Sum Circular Subarray/Solution.ts new file mode 100644 index 0000000000000..b67ef403ae08d --- /dev/null +++ b/solution/0900-0999/0918.Maximum Sum Circular Subarray/Solution.ts @@ -0,0 +1,16 @@ +function maxSubarraySumCircular(nums: number[]): number { + let pre1 = nums[0], pre2 = nums[0]; + let ans1 = nums[0], ans2 = nums[0]; + let sum = nums[0]; + + for (let i = 1; i < nums.length; ++i) { + let cur = nums[i]; + sum += cur; + pre1 = Math.max(pre1 + cur, cur); + ans1 = Math.max(pre1, ans1); + + pre2 = Math.min(pre2 + cur, cur); + ans2 = Math.min(pre2, ans2); + } + return ans1 > 0 ? Math.max(ans1, sum - ans2) : ans1; +}; \ No newline at end of file