From a7a485db5a0747bff7d64c266a2caeaac26ae9f2 Mon Sep 17 00:00:00 2001 From: Jia Guoqing Date: Tue, 6 Apr 2021 16:26:23 +0800 Subject: [PATCH 1/3] feat: add solutions to leetcode No.0026.Remove Duplicates from Sorted Array --- .../README.md | 26 +++++++++++++++++-- .../README_EN.md | 22 ++++++++++++++++ .../Solution.cpp | 20 ++++++++++++++ 3 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 solution/0000-0099/0026.Remove Duplicates from Sorted Array/Solution.cpp diff --git a/solution/0000-0099/0026.Remove Duplicates from Sorted Array/README.md b/solution/0000-0099/0026.Remove Duplicates from Sorted Array/README.md index 7ac2567431a91..49e8a94a8d242 100644 --- a/solution/0000-0099/0026.Remove Duplicates from Sorted Array/README.md +++ b/solution/0000-0099/0026.Remove Duplicates from Sorted Array/README.md @@ -13,9 +13,9 @@

示例 1:

-
给定数组 nums = [1,1,2], 
+
给定数组 nums = [1,1,2],
 
-函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 
+函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。
 
 你不需要考虑数组中超出新长度后面的元素。
@@ -122,6 +122,28 @@ func removeDuplicates(nums []int) int { } ``` +### **C++** + +```cpp +class Solution { +public: + int removeDuplicates(vector& nums) { + int n = nums.size(); + if(n < 2) { + return n; + } + + int idx = 0; + for(int n : nums) { + if(idx < 1 || nums[idx-1] < n) { + nums[idx++] = n; + } + } + return idx; + } +}; +``` + ### **...** ``` diff --git a/solution/0000-0099/0026.Remove Duplicates from Sorted Array/README_EN.md b/solution/0000-0099/0026.Remove Duplicates from Sorted Array/README_EN.md index a8458efc8664d..bdbd1aaf54b4b 100644 --- a/solution/0000-0099/0026.Remove Duplicates from Sorted Array/README_EN.md +++ b/solution/0000-0099/0026.Remove Duplicates from Sorted Array/README_EN.md @@ -132,6 +132,28 @@ func removeDuplicates(nums []int) int { } ``` +### **C++** + +```cpp +class Solution { +public: + int removeDuplicates(vector& nums) { + int n = nums.size(); + if(n < 2) { + return n; + } + + int idx = 0; + for(int n : nums) { + if(idx < 1 || nums[idx-1] < n) { + nums[idx++] = n; + } + } + return idx; + } +}; +``` + ### **...** ``` diff --git a/solution/0000-0099/0026.Remove Duplicates from Sorted Array/Solution.cpp b/solution/0000-0099/0026.Remove Duplicates from Sorted Array/Solution.cpp new file mode 100644 index 0000000000000..e205eb64923d2 --- /dev/null +++ b/solution/0000-0099/0026.Remove Duplicates from Sorted Array/Solution.cpp @@ -0,0 +1,20 @@ +/** + * Author: Moriarty12138 + */ +class Solution { +public: + int removeDuplicates(vector& nums) { + int n = nums.size(); + if(n < 2) { + return n; + } + + int idx = 0; + for(int n : nums) { + if(idx < 1 || nums[idx-1] < n) { + nums[idx++] = n; + } + } + return idx; + } +}; From 19d0d4b53eb70b72fb4dd1db7426b4e56622ed4f Mon Sep 17 00:00:00 2001 From: Jia Guoqing Date: Tue, 6 Apr 2021 23:33:01 +0800 Subject: [PATCH 2/3] feat: add solutions to leetcode No.0739.Daily Temperatures --- .../0739.Daily Temperatures/README.md | 24 +++++++++++++++++++ .../0739.Daily Temperatures/README_EN.md | 24 +++++++++++++++++++ .../0739.Daily Temperatures/Solution.cpp | 20 ++++++++++++++++ 3 files changed, 68 insertions(+) create mode 100644 solution/0700-0799/0739.Daily Temperatures/Solution.cpp diff --git a/solution/0700-0799/0739.Daily Temperatures/README.md b/solution/0700-0799/0739.Daily Temperatures/README.md index 4c8a3980a80dc..8bc137d6dddd7 100644 --- a/solution/0700-0799/0739.Daily Temperatures/README.md +++ b/solution/0700-0799/0739.Daily Temperatures/README.md @@ -66,6 +66,30 @@ class Solution { } ``` +### **C++** + + + +```cpp +class Solution { +public: + vector dailyTemperatures(vector& T) { + int n = T.size(); + vector ans(n); + stack s; + for(int i = 0; i < n; ++i) { + while(!s.empty() && T[s.top()] < T[i]) { + int pre = s.top(); + s.pop(); + ans[pre] = i - pre; + } + s.push(i); + } + return ans; + } +}; +``` + ### **...** ``` diff --git a/solution/0700-0799/0739.Daily Temperatures/README_EN.md b/solution/0700-0799/0739.Daily Temperatures/README_EN.md index 0a5b6a248fa37..6ac85860f3c52 100644 --- a/solution/0700-0799/0739.Daily Temperatures/README_EN.md +++ b/solution/0700-0799/0739.Daily Temperatures/README_EN.md @@ -62,6 +62,30 @@ class Solution { } ``` +### **C++** + + + +```cpp +class Solution { +public: + vector dailyTemperatures(vector& T) { + int n = T.size(); + vector ans(n); + stack s; + for(int i = 0; i < n; ++i) { + while(!s.empty() && T[s.top()] < T[i]) { + int pre = s.top(); + s.pop(); + ans[pre] = i - pre; + } + s.push(i); + } + return ans; + } +}; +``` + ### **...** ``` diff --git a/solution/0700-0799/0739.Daily Temperatures/Solution.cpp b/solution/0700-0799/0739.Daily Temperatures/Solution.cpp new file mode 100644 index 0000000000000..21b1b39aa7094 --- /dev/null +++ b/solution/0700-0799/0739.Daily Temperatures/Solution.cpp @@ -0,0 +1,20 @@ +/** + * Author: Moriarty12138 + */ +class Solution { +public: + vector dailyTemperatures(vector& T) { + int n = T.size(); + vector ans(n); + stack s; + for(int i = 0; i < n; ++i) { + while(!s.empty() && T[s.top()] < T[i]) { + int pre = s.top(); + s.pop(); + ans[pre] = i - pre; + } + s.push(i); + } + return ans; + } +}; From 2425ffb80a9122881e03bdc57a7c3001afda4381 Mon Sep 17 00:00:00 2001 From: Jia Guoqing Date: Wed, 7 Apr 2021 22:53:55 +0800 Subject: [PATCH 3/3] feat: add solution to leetcode No.0033 No.0081 --- .../README.md | 40 +++++++++++++++++ .../README_EN.md | 40 +++++++++++++++++ .../Solution.cpp | 6 +-- .../README.md | 45 +++++++++++++++++++ .../README_EN.md | 45 +++++++++++++++++++ .../Solution.cpp | 41 +++++++++++++++++ 6 files changed, 214 insertions(+), 3 deletions(-) create mode 100644 solution/0000-0099/0081.Search in Rotated Sorted Array II/Solution.cpp diff --git a/solution/0000-0099/0033.Search in Rotated Sorted Array/README.md b/solution/0000-0099/0033.Search in Rotated Sorted Array/README.md index bbc59c10bb224..7fb8da565a762 100644 --- a/solution/0000-0099/0033.Search in Rotated Sorted Array/README.md +++ b/solution/0000-0099/0033.Search in Rotated Sorted Array/README.md @@ -48,6 +48,46 @@ ``` +### **C++** + + + +```cpp +class Solution { +public: + int search(vector& nums, int target) { + if(nums.size() < 1) { + return -1; + } + if(nums.size() == 1) { + return nums[0] == target ? 0 : -1; + } + int n = nums.size(); + int l = 0, r = n - 1; + while(l <= r) { + int mid = (l + r) / 2; + if(nums[mid] == target) { + return mid; + } + if(nums[l] <= nums[mid]) { + if(nums[l] <= target && target < nums[mid]) { + r = mid - 1; + }else { + l = mid + 1; + } + }else { + if(nums[mid] < target && target <= nums[r]) { + l = mid + 1; + }else { + r = mid - 1; + } + } + } + return -1; + } +}; +``` + ### **...** ``` diff --git a/solution/0000-0099/0033.Search in Rotated Sorted Array/README_EN.md b/solution/0000-0099/0033.Search in Rotated Sorted Array/README_EN.md index 5769ad8add2c1..29f82392108e5 100644 --- a/solution/0000-0099/0033.Search in Rotated Sorted Array/README_EN.md +++ b/solution/0000-0099/0033.Search in Rotated Sorted Array/README_EN.md @@ -48,6 +48,46 @@ ``` +### **C++** + + + +```cpp +class Solution { +public: + int search(vector& nums, int target) { + if(nums.size() < 1) { + return -1; + } + if(nums.size() == 1) { + return nums[0] == target ? 0 : -1; + } + int n = nums.size(); + int l = 0, r = n - 1; + while(l <= r) { + int mid = (l + r) / 2; + if(nums[mid] == target) { + return mid; + } + if(nums[l] <= nums[mid]) { + if(nums[l] <= target && target < nums[mid]) { + r = mid - 1; + }else { + l = mid + 1; + } + }else { + if(nums[mid] < target && target <= nums[r]) { + l = mid + 1; + }else { + r = mid - 1; + } + } + } + return -1; + } +}; +``` + ### **...** ``` diff --git a/solution/0000-0099/0033.Search in Rotated Sorted Array/Solution.cpp b/solution/0000-0099/0033.Search in Rotated Sorted Array/Solution.cpp index e4fce73a105be..f8b2c1132900e 100644 --- a/solution/0000-0099/0033.Search in Rotated Sorted Array/Solution.cpp +++ b/solution/0000-0099/0033.Search in Rotated Sorted Array/Solution.cpp @@ -8,7 +8,7 @@ class Solution { while(left <= right) { mid = (left + right) / 2; if(nums[mid] == target)return mid; - + if(nums[mid] < nums[right]) { if(nums[right] >= target && nums[mid] < target)left = mid + 1; else right = mid - 1; @@ -18,7 +18,7 @@ class Solution { else left = mid + 1; } } - return -1; + return -1; } }; @@ -30,7 +30,7 @@ class Solution { for(int i = 0;i + +```cpp +class Solution { +public: + bool search(vector& nums, int target) { + if(nums.size() < 1) { + return false; + } + if(nums.size() == 1) { + return nums[0] == target; + } + int n = nums.size(); + int l = 0, r = n - 1; + while(l <= r) { + int mid = (l + r) / 2; + if(nums[mid] == target) { + return true; + } + if(nums[l] == nums[mid] && nums[mid] == nums[r]) { + l++; + r--; + }else if(nums[l] <= nums[mid]) { + // + if(nums[l] <= target && target < nums[mid]) { + r = mid - 1; + }else { + l = mid + 1; + } + }else { + // + if(nums[mid] < target && target <= nums[r]) { + l = mid + 1; + }else { + r = mid - 1; + } + } + } + return false; + } +}; +``` + ### **...** ``` diff --git a/solution/0000-0099/0081.Search in Rotated Sorted Array II/README_EN.md b/solution/0000-0099/0081.Search in Rotated Sorted Array II/README_EN.md index e1850b5072b1d..64c6283b95b32 100644 --- a/solution/0000-0099/0081.Search in Rotated Sorted Array II/README_EN.md +++ b/solution/0000-0099/0081.Search in Rotated Sorted Array II/README_EN.md @@ -51,6 +51,51 @@ ``` +### **C++** + + + +```cpp +class Solution { +public: + bool search(vector& nums, int target) { + if(nums.size() < 1) { + return false; + } + if(nums.size() == 1) { + return nums[0] == target; + } + int n = nums.size(); + int l = 0, r = n - 1; + while(l <= r) { + int mid = (l + r) / 2; + if(nums[mid] == target) { + return true; + } + if(nums[l] == nums[mid] && nums[mid] == nums[r]) { + l++; + r--; + }else if(nums[l] <= nums[mid]) { + // + if(nums[l] <= target && target < nums[mid]) { + r = mid - 1; + }else { + l = mid + 1; + } + }else { + // + if(nums[mid] < target && target <= nums[r]) { + l = mid + 1; + }else { + r = mid - 1; + } + } + } + return false; + } +}; +``` + ### **...** ``` diff --git a/solution/0000-0099/0081.Search in Rotated Sorted Array II/Solution.cpp b/solution/0000-0099/0081.Search in Rotated Sorted Array II/Solution.cpp new file mode 100644 index 0000000000000..f663b14b70699 --- /dev/null +++ b/solution/0000-0099/0081.Search in Rotated Sorted Array II/Solution.cpp @@ -0,0 +1,41 @@ +/** + * Author: Moriarty12138 + */ + class Solution { + public: + bool search(vector& nums, int target) { + if(nums.size() < 1) { + return false; + } + if(nums.size() == 1) { + return nums[0] == target; + } + int n = nums.size(); + int l = 0, r = n - 1; + while(l <= r) { + int mid = (l + r) / 2; + if(nums[mid] == target) { + return true; + } + if(nums[l] == nums[mid] && nums[mid] == nums[r]) { + l++; + r--; + }else if(nums[l] <= nums[mid]) { + // + if(nums[l] <= target && target < nums[mid]) { + r = mid - 1; + }else { + l = mid + 1; + } + }else { + // + if(nums[mid] < target && target <= nums[r]) { + l = mid + 1; + }else { + r = mid - 1; + } + } + } + return false; + } + };