Skip to content

Commit 31f97a1

Browse files
committed
feat: add solutions to lc problmes: No.2136,2138
* No.2136.Earliest Possible Day of Full Bloom * No.2138.Divide a String Into Groups of Size k
1 parent 9a4f7a1 commit 31f97a1

File tree

12 files changed

+337
-4
lines changed

12 files changed

+337
-4
lines changed

solution/2100-2199/2136.Earliest Possible Day of Full Bloom/README.md

Lines changed: 75 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,22 +66,96 @@
6666

6767
<!-- 这里可写通用的实现逻辑 -->
6868

69+
**方法一:贪心 + 排序**
70+
71+
生长时间越长的种子,越先播种,因此将 $growTime$ 降序排列。
72+
6973
<!-- tabs:start -->
7074

7175
### **Python3**
7276

7377
<!-- 这里可写当前语言的特殊实现逻辑 -->
7478

7579
```python
76-
80+
class Solution:
81+
def earliestFullBloom(self, plantTime: List[int], growTime: List[int]) -> int:
82+
ans = t = 0
83+
for a, b in sorted(zip(plantTime, growTime), key=lambda x: -x[1]):
84+
t += a
85+
ans = max(ans, t + b)
86+
return ans
7787
```
7888

7989
### **Java**
8090

8191
<!-- 这里可写当前语言的特殊实现逻辑 -->
8292

8393
```java
94+
class Solution {
95+
public int earliestFullBloom(int[] plantTime, int[] growTime) {
96+
int n = plantTime.length;
97+
int[][] arr = new int[n][2];
98+
for (int i = 0; i < n; ++i) {
99+
arr[i] = new int[]{plantTime[i], growTime[i]};
100+
}
101+
Arrays.sort(arr, (a, b) -> b[1] - a[1]);
102+
int ans = 0;
103+
int t = 0;
104+
for (int[] e : arr) {
105+
t += e[0];
106+
ans = Math.max(ans, t + e[1]);
107+
}
108+
return ans;
109+
}
110+
}
111+
```
112+
113+
### **C++**
114+
115+
```cpp
116+
class Solution {
117+
public:
118+
int earliestFullBloom(vector<int>& plantTime, vector<int>& growTime) {
119+
int n = plantTime.size();
120+
vector<pair<int, int>> arr;
121+
for (int i = 0; i < n; ++i) arr.push_back({-growTime[i], plantTime[i]});
122+
sort(arr.begin(), arr.end());
123+
int ans = 0, t = 0;
124+
for (auto [a, b] : arr)
125+
{
126+
t += b;
127+
ans = max(ans, t - a);
128+
}
129+
return ans;
130+
}
131+
};
132+
```
84133
134+
### **Go**
135+
136+
```go
137+
func earliestFullBloom(plantTime []int, growTime []int) int {
138+
arr := [][]int{}
139+
for i, a := range plantTime {
140+
arr = append(arr, []int{a, growTime[i]})
141+
}
142+
sort.Slice(arr, func(i, j int) bool {
143+
return arr[i][1] > arr[j][1]
144+
})
145+
ans, t := 0, 0
146+
for _, e := range arr {
147+
t += e[0]
148+
ans = max(ans, t+e[1])
149+
}
150+
return ans
151+
}
152+
153+
func max(a, b int) int {
154+
if a > b {
155+
return a
156+
}
157+
return b
158+
}
85159
```
86160

87161
### **TypeScript**

solution/2100-2199/2136.Earliest Possible Day of Full Bloom/README_EN.md

Lines changed: 71 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,83 @@ Thus, on day 2, all the seeds are blooming.
6868
### **Python3**
6969

7070
```python
71-
71+
class Solution:
72+
def earliestFullBloom(self, plantTime: List[int], growTime: List[int]) -> int:
73+
ans = t = 0
74+
for a, b in sorted(zip(plantTime, growTime), key=lambda x: -x[1]):
75+
t += a
76+
ans = max(ans, t + b)
77+
return ans
7278
```
7379

7480
### **Java**
7581

7682
```java
83+
class Solution {
84+
public int earliestFullBloom(int[] plantTime, int[] growTime) {
85+
int n = plantTime.length;
86+
int[][] arr = new int[n][2];
87+
for (int i = 0; i < n; ++i) {
88+
arr[i] = new int[]{plantTime[i], growTime[i]};
89+
}
90+
Arrays.sort(arr, (a, b) -> b[1] - a[1]);
91+
int ans = 0;
92+
int t = 0;
93+
for (int[] e : arr) {
94+
t += e[0];
95+
ans = Math.max(ans, t + e[1]);
96+
}
97+
return ans;
98+
}
99+
}
100+
```
101+
102+
### **C++**
103+
104+
```cpp
105+
class Solution {
106+
public:
107+
int earliestFullBloom(vector<int>& plantTime, vector<int>& growTime) {
108+
int n = plantTime.size();
109+
vector<pair<int, int>> arr;
110+
for (int i = 0; i < n; ++i) arr.push_back({-growTime[i], plantTime[i]});
111+
sort(arr.begin(), arr.end());
112+
int ans = 0, t = 0;
113+
for (auto [a, b] : arr)
114+
{
115+
t += b;
116+
ans = max(ans, t - a);
117+
}
118+
return ans;
119+
}
120+
};
121+
```
77122
123+
### **Go**
124+
125+
```go
126+
func earliestFullBloom(plantTime []int, growTime []int) int {
127+
arr := [][]int{}
128+
for i, a := range plantTime {
129+
arr = append(arr, []int{a, growTime[i]})
130+
}
131+
sort.Slice(arr, func(i, j int) bool {
132+
return arr[i][1] > arr[j][1]
133+
})
134+
ans, t := 0, 0
135+
for _, e := range arr {
136+
t += e[0]
137+
ans = max(ans, t+e[1])
138+
}
139+
return ans
140+
}
141+
142+
func max(a, b int) int {
143+
if a > b {
144+
return a
145+
}
146+
return b
147+
}
78148
```
79149

80150
### **TypeScript**
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
class Solution {
2+
public:
3+
int earliestFullBloom(vector<int>& plantTime, vector<int>& growTime) {
4+
int n = plantTime.size();
5+
vector<pair<int, int>> arr;
6+
for (int i = 0; i < n; ++i) arr.push_back({-growTime[i], plantTime[i]});
7+
sort(arr.begin(), arr.end());
8+
int ans = 0, t = 0;
9+
for (auto [a, b] : arr)
10+
{
11+
t += b;
12+
ans = max(ans, t - a);
13+
}
14+
return ans;
15+
}
16+
};
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
func earliestFullBloom(plantTime []int, growTime []int) int {
2+
arr := [][]int{}
3+
for i, a := range plantTime {
4+
arr = append(arr, []int{a, growTime[i]})
5+
}
6+
sort.Slice(arr, func(i, j int) bool {
7+
return arr[i][1] > arr[j][1]
8+
})
9+
ans, t := 0, 0
10+
for _, e := range arr {
11+
t += e[0]
12+
ans = max(ans, t+e[1])
13+
}
14+
return ans
15+
}
16+
17+
func max(a, b int) int {
18+
if a > b {
19+
return a
20+
}
21+
return b
22+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
class Solution:
2+
def earliestFullBloom(self, plantTime: List[int], growTime: List[int]) -> int:
3+
ans = t = 0
4+
for a, b in sorted(zip(plantTime, growTime), key=lambda x: -x[1]):
5+
t += a
6+
ans = max(ans, t + b)
7+
return ans
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
class Solution {
2+
public int earliestFullBloom(int[] plantTime, int[] growTime) {
3+
int n = plantTime.length;
4+
int[][] arr = new int[n][2];
5+
for (int i = 0; i < n; ++i) {
6+
arr[i] = new int[]{plantTime[i], growTime[i]};
7+
}
8+
Arrays.sort(arr, (a, b) -> b[1] - a[1]);
9+
int ans = 0;
10+
int t = 0;
11+
for (int[] e : arr) {
12+
t += e[0];
13+
ans = Math.max(ans, t + e[1]);
14+
}
15+
return ans;
16+
}
17+
}

solution/2100-2199/2138.Divide a String Into Groups of Size k/README.md

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,15 +63,60 @@
6363
<!-- 这里可写当前语言的特殊实现逻辑 -->
6464

6565
```python
66-
66+
class Solution:
67+
def divideString(self, s: str, k: int, fill: str) -> List[str]:
68+
return [s[i: i + k].ljust(k, fill) for i in range(0, len(s), k)]
6769
```
6870

6971
### **Java**
7072

7173
<!-- 这里可写当前语言的特殊实现逻辑 -->
7274

7375
```java
76+
class Solution {
77+
public String[] divideString(String s, int k, char fill) {
78+
int n = s.length();
79+
String[] ans = new String[(n + k - 1) / k];
80+
if (n % k != 0) {
81+
s += String.valueOf(fill).repeat(k - n % k);
82+
}
83+
for (int i = 0; i < ans.length; ++i) {
84+
ans[i] = s.substring(i * k, (i + 1) * k);
85+
}
86+
return ans;
87+
}
88+
}
89+
```
90+
91+
### **C++**
92+
93+
```cpp
94+
class Solution {
95+
public:
96+
vector<string> divideString(string s, int k, char fill) {
97+
int n = s.size();
98+
if (n % k) for (int i = 0; i < k - n % k; ++i) s.push_back(fill);
99+
vector<string> ans;
100+
for (int i = 0; i < s.size() / k; ++i) ans.push_back(s.substr(i * k, k));
101+
return ans;
102+
}
103+
};
104+
```
74105
106+
### **Go**
107+
108+
```go
109+
func divideString(s string, k int, fill byte) []string {
110+
n := len(s)
111+
if n%k != 0 {
112+
s += strings.Repeat(string(fill), k-n%k)
113+
}
114+
var ans []string
115+
for i := 0; i < len(s)/k; i++ {
116+
ans = append(ans, s[i*k:(i+1)*k])
117+
}
118+
return ans
119+
}
75120
```
76121

77122
### **TypeScript**

solution/2100-2199/2138.Divide a String Into Groups of Size k/README_EN.md

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,58 @@ Thus, the 4 groups formed are &quot;abc&quot;, &quot;def&quot;, &quot;ghi&quot;,
5757
### **Python3**
5858

5959
```python
60-
60+
class Solution:
61+
def divideString(self, s: str, k: int, fill: str) -> List[str]:
62+
return [s[i: i + k].ljust(k, fill) for i in range(0, len(s), k)]
6163
```
6264

6365
### **Java**
6466

6567
```java
68+
class Solution {
69+
public String[] divideString(String s, int k, char fill) {
70+
int n = s.length();
71+
String[] ans = new String[(n + k - 1) / k];
72+
if (n % k != 0) {
73+
s += String.valueOf(fill).repeat(k - n % k);
74+
}
75+
for (int i = 0; i < ans.length; ++i) {
76+
ans[i] = s.substring(i * k, (i + 1) * k);
77+
}
78+
return ans;
79+
}
80+
}
81+
```
82+
83+
### **C++**
84+
85+
```cpp
86+
class Solution {
87+
public:
88+
vector<string> divideString(string s, int k, char fill) {
89+
int n = s.size();
90+
if (n % k) for (int i = 0; i < k - n % k; ++i) s.push_back(fill);
91+
vector<string> ans;
92+
for (int i = 0; i < s.size() / k; ++i) ans.push_back(s.substr(i * k, k));
93+
return ans;
94+
}
95+
};
96+
```
6697
98+
### **Go**
99+
100+
```go
101+
func divideString(s string, k int, fill byte) []string {
102+
n := len(s)
103+
if n%k != 0 {
104+
s += strings.Repeat(string(fill), k-n%k)
105+
}
106+
var ans []string
107+
for i := 0; i < len(s)/k; i++ {
108+
ans = append(ans, s[i*k:(i+1)*k])
109+
}
110+
return ans
111+
}
67112
```
68113

69114
### **TypeScript**
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
class Solution {
2+
public:
3+
vector<string> divideString(string s, int k, char fill) {
4+
int n = s.size();
5+
if (n % k) for (int i = 0; i < k - n % k; ++i) s.push_back(fill);
6+
vector<string> ans;
7+
for (int i = 0; i < s.size() / k; ++i) ans.push_back(s.substr(i * k, k));
8+
return ans;
9+
}
10+
};
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
func divideString(s string, k int, fill byte) []string {
2+
n := len(s)
3+
if n%k != 0 {
4+
s += strings.Repeat(string(fill), k-n%k)
5+
}
6+
var ans []string
7+
for i := 0; i < len(s)/k; i++ {
8+
ans = append(ans, s[i*k:(i+1)*k])
9+
}
10+
return ans
11+
}

0 commit comments

Comments
 (0)