From 5a4265d7dba45ac58de7f0487ec07c6b60f92cef Mon Sep 17 00:00:00 2001 From: yanglbme Date: Tue, 11 Jul 2023 09:13:59 +0800 Subject: [PATCH] feat: add ts solution to lc problem: No.1911 No.1911.Maximum Alternating Subsequence Sum --- .../README.md | 25 +++++++++++++++++++ .../README_EN.md | 25 +++++++++++++++++++ .../Solution.ts | 7 ++++++ 3 files changed, 57 insertions(+) create mode 100644 solution/1900-1999/1911.Maximum Alternating Subsequence Sum/Solution.ts diff --git a/solution/1900-1999/1911.Maximum Alternating Subsequence Sum/README.md b/solution/1900-1999/1911.Maximum Alternating Subsequence Sum/README.md index 2a3ae8de76e57..b3f944923382f 100644 --- a/solution/1900-1999/1911.Maximum Alternating Subsequence Sum/README.md +++ b/solution/1900-1999/1911.Maximum Alternating Subsequence Sum/README.md @@ -212,6 +212,31 @@ func max(a, b int) int { } ``` +### **TypeScript** + +```ts +function maxAlternatingSum(nums: number[]): number { + const n = nums.length; + const f: number[] = new Array(n + 1).fill(0); + const g = f.slice(); + for (let i = 1; i <= n; ++i) { + f[i] = Math.max(g[i - 1] + nums[i - 1], f[i - 1]); + g[i] = Math.max(f[i - 1] - nums[i - 1], g[i - 1]); + } + return Math.max(f[n], g[n]); +} +``` + +```ts +function maxAlternatingSum(nums: number[]): number { + let [f, g] = [0, 0]; + for (const x of nums) { + [f, g] = [Math.max(g - x, f), Math.max(f + x, g)]; + } + return g; +} +``` + ### **...** ``` diff --git a/solution/1900-1999/1911.Maximum Alternating Subsequence Sum/README_EN.md b/solution/1900-1999/1911.Maximum Alternating Subsequence Sum/README_EN.md index 7cb56ff6d83dd..64d12bd2179bf 100644 --- a/solution/1900-1999/1911.Maximum Alternating Subsequence Sum/README_EN.md +++ b/solution/1900-1999/1911.Maximum Alternating Subsequence Sum/README_EN.md @@ -180,6 +180,31 @@ func max(a, b int) int { } ``` +### **TypeScript** + +```ts +function maxAlternatingSum(nums: number[]): number { + const n = nums.length; + const f: number[] = new Array(n + 1).fill(0); + const g = f.slice(); + for (let i = 1; i <= n; ++i) { + f[i] = Math.max(g[i - 1] + nums[i - 1], f[i - 1]); + g[i] = Math.max(f[i - 1] - nums[i - 1], g[i - 1]); + } + return Math.max(f[n], g[n]); +} +``` + +```ts +function maxAlternatingSum(nums: number[]): number { + let [f, g] = [0, 0]; + for (const x of nums) { + [f, g] = [Math.max(g - x, f), Math.max(f + x, g)]; + } + return g; +} +``` + ### **...** ``` diff --git a/solution/1900-1999/1911.Maximum Alternating Subsequence Sum/Solution.ts b/solution/1900-1999/1911.Maximum Alternating Subsequence Sum/Solution.ts new file mode 100644 index 0000000000000..7dbb1c90a1ce6 --- /dev/null +++ b/solution/1900-1999/1911.Maximum Alternating Subsequence Sum/Solution.ts @@ -0,0 +1,7 @@ +function maxAlternatingSum(nums: number[]): number { + let [f, g] = [0, 0]; + for (const x of nums) { + [f, g] = [Math.max(g - x, f), Math.max(f + x, g)]; + } + return g; +}