Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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)

AltStyle によって変換されたページ (->オリジナル) /