From 551eed2d1015008d809d77b84ee410087e634163 Mon Sep 17 00:00:00 2001 From: Ming91 Date: Wed, 13 Sep 2023 05:32:33 +0000 Subject: [PATCH 1/4] feat: update Java solution to lc problem: No.135 --- package-lock.json | 2 +- solution/0100-0199/0135.Candy/README.md | 37 +++++++++++---------- solution/0100-0199/0135.Candy/README_EN.md | 37 +++++++++++---------- solution/0100-0199/0135.Candy/Solution.java | 37 +++++++++++---------- 4 files changed, 61 insertions(+), 52 deletions(-) diff --git a/package-lock.json b/package-lock.json index b7a71c1fcb60c..9ba412afea23e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "leetcode", + "name": "leetcode-1", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/solution/0100-0199/0135.Candy/README.md b/solution/0100-0199/0135.Candy/README.md index fff5914d6a0c6..0cf7ab36ff47b 100644 --- a/solution/0100-0199/0135.Candy/README.md +++ b/solution/0100-0199/0135.Candy/README.md @@ -88,25 +88,28 @@ class Solution: class Solution { public int candy(int[] ratings) { int n = ratings.length; - int[] left = new int[n]; - int[] right = new int[n]; - Arrays.fill(left, 1); - Arrays.fill(right, 1); - for (int i = 1; i < n; ++i) { - if (ratings[i] > ratings[i - 1]) { - left[i] = left[i - 1] + 1; - } - } - for (int i = n - 2; i >= 0; --i) { - if (ratings[i] > ratings[i + 1]) { - right[i] = right[i + 1] + 1; + int up = 0; + int down = 0; + int peak = 0; + int candies = 1; + for (int i = 1; i < n; i++) { + if (ratings[i - 1] < ratings[i]) { + up++; + peak = up + 1; + down = 0; + candies += peak; + } else if (ratings[i] == ratings[i - 1]) { + peak = 0; + up = 0; + down = 0; + candies++; + } else { + down++; + up = 0; + candies += down + (peak > down ? 0 : 1); } } - int ans = 0; - for (int i = 0; i < n; ++i) { - ans += Math.max(left[i], right[i]); - } - return ans; + return candies; } } ``` diff --git a/solution/0100-0199/0135.Candy/README_EN.md b/solution/0100-0199/0135.Candy/README_EN.md index 03198acfef1c1..0d2e8a95fbf03 100644 --- a/solution/0100-0199/0135.Candy/README_EN.md +++ b/solution/0100-0199/0135.Candy/README_EN.md @@ -79,25 +79,28 @@ class Solution: class Solution { public int candy(int[] ratings) { int n = ratings.length; - int[] left = new int[n]; - int[] right = new int[n]; - Arrays.fill(left, 1); - Arrays.fill(right, 1); - for (int i = 1; i < n; ++i) { - if (ratings[i] > ratings[i - 1]) { - left[i] = left[i - 1] + 1; - } - } - for (int i = n - 2; i >= 0; --i) { - if (ratings[i] > ratings[i + 1]) { - right[i] = right[i + 1] + 1; + int up = 0; + int down = 0; + int peak = 0; + int candies = 1; + for (int i = 1; i < n; i++) { + if (ratings[i - 1] < ratings[i]) { + up++; + peak = up + 1; + down = 0; + candies += peak; + } else if (ratings[i] == ratings[i - 1]) { + peak = 0; + up = 0; + down = 0; + candies++; + } else { + down++; + up = 0; + candies += down + (peak > down ? 0 : 1); } } - int ans = 0; - for (int i = 0; i < n; ++i) { - ans += Math.max(left[i], right[i]); - } - return ans; + return candies; } } ``` diff --git a/solution/0100-0199/0135.Candy/Solution.java b/solution/0100-0199/0135.Candy/Solution.java index 0fcbd2d60ca2a..12695f93146a2 100644 --- a/solution/0100-0199/0135.Candy/Solution.java +++ b/solution/0100-0199/0135.Candy/Solution.java @@ -1,24 +1,27 @@ class Solution { public int candy(int[] ratings) { int n = ratings.length; - int[] left = new int[n]; - int[] right = new int[n]; - Arrays.fill(left, 1); - Arrays.fill(right, 1); - for (int i = 1; i < n; ++i) { - if (ratings[i] > ratings[i - 1]) { - left[i] = left[i - 1] + 1; + int up = 0; + int down = 0; + int peak = 0; + int candies = 1; + for (int i = 1; i < n; i++) { + if (ratings[i - 1] < ratings[i]) { + up++; + peak = up + 1; + down = 0; + candies += peak; + } else if (ratings[i] == ratings[i - 1]) { + peak = 0; + up = 0; + down = 0; + candies++; + } else { + down++; + up = 0; + candies += down + (peak > down ? 0 : 1); } } - for (int i = n - 2; i >= 0; --i) { - if (ratings[i] > ratings[i + 1]) { - right[i] = right[i + 1] + 1; - } - } - int ans = 0; - for (int i = 0; i < n; ++i) { - ans += Math.max(left[i], right[i]); - } - return ans; + return candies; } } \ No newline at end of file From b4779eaa3775e0153e524b57df386590d5808d0d Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Wed, 13 Sep 2023 16:46:37 +0800 Subject: [PATCH 2/4] Update README_EN.md --- solution/0100-0199/0135.Candy/README_EN.md | 27 ++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/solution/0100-0199/0135.Candy/README_EN.md b/solution/0100-0199/0135.Candy/README_EN.md index 0d2e8a95fbf03..221a6949c1c7f 100644 --- a/solution/0100-0199/0135.Candy/README_EN.md +++ b/solution/0100-0199/0135.Candy/README_EN.md @@ -75,6 +75,33 @@ class Solution: ### **Java** +```java +class Solution { + public int candy(int[] ratings) { + int n = ratings.length; + int[] left = new int[n]; + int[] right = new int[n]; + Arrays.fill(left, 1); + Arrays.fill(right, 1); + for (int i = 1; i < n; ++i) { + if (ratings[i] > ratings[i - 1]) { + left[i] = left[i - 1] + 1; + } + } + for (int i = n - 2; i >= 0; --i) { + if (ratings[i] > ratings[i + 1]) { + right[i] = right[i + 1] + 1; + } + } + int ans = 0; + for (int i = 0; i < n; ++i) { + ans += Math.max(left[i], right[i]); + } + return ans; + } +} +``` + ```java class Solution { public int candy(int[] ratings) { From 43d3b2eabec867db542f51fdd6c00ad58f50133a Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Wed, 13 Sep 2023 16:47:27 +0800 Subject: [PATCH 3/4] Update README.md --- solution/0100-0199/0135.Candy/README.md | 27 +++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/solution/0100-0199/0135.Candy/README.md b/solution/0100-0199/0135.Candy/README.md index 0cf7ab36ff47b..ccd2a788a985a 100644 --- a/solution/0100-0199/0135.Candy/README.md +++ b/solution/0100-0199/0135.Candy/README.md @@ -84,6 +84,33 @@ class Solution: +```java +class Solution { + public int candy(int[] ratings) { + int n = ratings.length; + int[] left = new int[n]; + int[] right = new int[n]; + Arrays.fill(left, 1); + Arrays.fill(right, 1); + for (int i = 1; i < n; ++i) { + if (ratings[i] > ratings[i - 1]) { + left[i] = left[i - 1] + 1; + } + } + for (int i = n - 2; i >= 0; --i) { + if (ratings[i] > ratings[i + 1]) { + right[i] = right[i + 1] + 1; + } + } + int ans = 0; + for (int i = 0; i < n; ++i) { + ans += Math.max(left[i], right[i]); + } + return ans; + } +} +``` + ```java class Solution { public int candy(int[] ratings) { From 05047ccddc9dc2afde8ee39527ade57db7a3490d Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Wed, 13 Sep 2023 16:47:56 +0800 Subject: [PATCH 4/4] Update package-lock.json --- package-lock.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 9ba412afea23e..b7a71c1fcb60c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "leetcode-1", + "name": "leetcode", "lockfileVersion": 2, "requires": true, "packages": {