Skip to content

Commit af8e3d8

Browse files
committed
feat: add solutions to lc problems: No.2389~2391
- No.2389.Longest Subsequence With Limited Sum - No.2390.Removing Stars From a String - No.2391.Minimum Amount of Time to Collect Garbage
1 parent 773ea8a commit af8e3d8

File tree

12 files changed

+408
-6
lines changed

12 files changed

+408
-6
lines changed

solution/2300-2399/2389.Longest Subsequence With Limited Sum/README.md

+37-1
Original file line numberDiff line numberDiff line change
@@ -154,14 +154,50 @@ func answerQueries(nums []int, queries []int) []int {
154154
### **TypeScript**
155155

156156
```ts
157+
function answerQueries(nums: number[], queries: number[]): number[] {
158+
const n = nums.length;
159+
nums.sort((a, b) => a - b);
160+
return queries.map(querie => {
161+
let sum = 0;
162+
for (let i = 0; i < n; i++) {
163+
sum += nums[i];
164+
if (sum > querie) {
165+
return i;
166+
}
167+
}
168+
return n;
169+
});
170+
}
171+
```
157172

173+
### **Rust**
174+
175+
```rust
176+
impl Solution {
177+
pub fn answer_queries(mut nums: Vec<i32>, queries: Vec<i32>) -> Vec<i32> {
178+
let n = nums.len();
179+
nums.sort();
180+
queries
181+
.into_iter()
182+
.map(|querie| {
183+
let mut sum = 0;
184+
for i in 0..n {
185+
sum += nums[i];
186+
if sum > querie {
187+
return i as i32;
188+
}
189+
}
190+
n as i32
191+
})
192+
.collect()
193+
}
194+
}
158195
```
159196

160197
### **...**
161198

162199
```
163200
164-
165201
```
166202

167203
<!-- tabs:end -->

solution/2300-2399/2389.Longest Subsequence With Limited Sum/README_EN.md

+37-1
Original file line numberDiff line numberDiff line change
@@ -138,14 +138,50 @@ func answerQueries(nums []int, queries []int) []int {
138138
### **TypeScript**
139139

140140
```ts
141+
function answerQueries(nums: number[], queries: number[]): number[] {
142+
const n = nums.length;
143+
nums.sort((a, b) => a - b);
144+
return queries.map(querie => {
145+
let sum = 0;
146+
for (let i = 0; i < n; i++) {
147+
sum += nums[i];
148+
if (sum > querie) {
149+
return i;
150+
}
151+
}
152+
return n;
153+
});
154+
}
155+
```
141156

157+
### **Rust**
158+
159+
```rust
160+
impl Solution {
161+
pub fn answer_queries(mut nums: Vec<i32>, queries: Vec<i32>) -> Vec<i32> {
162+
let n = nums.len();
163+
nums.sort();
164+
queries
165+
.into_iter()
166+
.map(|querie| {
167+
let mut sum = 0;
168+
for i in 0..n {
169+
sum += nums[i];
170+
if sum > querie {
171+
return i as i32;
172+
}
173+
}
174+
n as i32
175+
})
176+
.collect()
177+
}
178+
}
142179
```
143180

144181
### **...**
145182

146183
```
147184
148-
149185
```
150186

151187
<!-- tabs:end -->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
impl Solution {
2+
pub fn answer_queries(mut nums: Vec<i32>, queries: Vec<i32>) -> Vec<i32> {
3+
let n = nums.len();
4+
nums.sort();
5+
queries
6+
.into_iter()
7+
.map(|querie| {
8+
let mut sum = 0;
9+
for i in 0..n {
10+
sum += nums[i];
11+
if sum > querie {
12+
return i as i32;
13+
}
14+
}
15+
n as i32
16+
})
17+
.collect()
18+
}
19+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
function answerQueries(nums: number[], queries: number[]): number[] {
2+
const n = nums.length;
3+
nums.sort((a, b) => a - b);
4+
return queries.map(querie => {
5+
let sum = 0;
6+
for (let i = 0; i < n; i++) {
7+
sum += nums[i];
8+
if (sum > querie) {
9+
return i;
10+
}
11+
}
12+
return n;
13+
});
14+
}

solution/2300-2399/2390.Removing Stars From a String/README.md

+28-1
Original file line numberDiff line numberDiff line change
@@ -136,14 +136,41 @@ func removeStars(s string) string {
136136
### **TypeScript**
137137

138138
```ts
139+
function removeStars(s: string): string {
140+
const stack = [];
141+
for (const c of s) {
142+
if (c === '*') {
143+
stack.pop();
144+
} else {
145+
stack.push(c);
146+
}
147+
}
148+
return stack.join('');
149+
}
150+
```
151+
152+
### **Rust**
139153

154+
```rust
155+
impl Solution {
156+
pub fn remove_stars(s: String) -> String {
157+
let mut res = String::new();
158+
for &c in s.as_bytes().iter() {
159+
if c == b'*' {
160+
res.pop();
161+
} else {
162+
res.push(char::from(c));
163+
}
164+
}
165+
res
166+
}
167+
}
140168
```
141169

142170
### **...**
143171

144172
```
145173
146-
147174
```
148175

149176
<!-- tabs:end -->

solution/2300-2399/2390.Removing Stars From a String/README_EN.md

+28-1
Original file line numberDiff line numberDiff line change
@@ -122,14 +122,41 @@ func removeStars(s string) string {
122122
### **TypeScript**
123123

124124
```ts
125+
function removeStars(s: string): string {
126+
const stack = [];
127+
for (const c of s) {
128+
if (c === '*') {
129+
stack.pop();
130+
} else {
131+
stack.push(c);
132+
}
133+
}
134+
return stack.join('');
135+
}
136+
```
137+
138+
### **Rust**
125139

140+
```rust
141+
impl Solution {
142+
pub fn remove_stars(s: String) -> String {
143+
let mut res = String::new();
144+
for &c in s.as_bytes().iter() {
145+
if c == b'*' {
146+
res.pop();
147+
} else {
148+
res.push(char::from(c));
149+
}
150+
}
151+
res
152+
}
153+
}
126154
```
127155

128156
### **...**
129157

130158
```
131159
132-
133160
```
134161

135162
<!-- tabs:end -->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
impl Solution {
2+
pub fn remove_stars(s: String) -> String {
3+
let mut res = String::new();
4+
for &c in s.as_bytes().iter() {
5+
if c == b'*' {
6+
res.pop();
7+
} else {
8+
res.push(char::from(c));
9+
}
10+
}
11+
res
12+
}
13+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
function removeStars(s: string): string {
2+
const stack = [];
3+
for (const c of s) {
4+
if (c === '*') {
5+
stack.pop();
6+
} else {
7+
stack.push(c);
8+
}
9+
}
10+
return stack.join('');
11+
}

solution/2300-2399/2391.Minimum Amount of Time to Collect Garbage/README.md

+75-1
Original file line numberDiff line numberDiff line change
@@ -223,13 +223,87 @@ func garbageCollection(garbage []string, travel []int) int {
223223
### **TypeScript**
224224

225225
```ts
226+
function garbageCollection(garbage: string[], travel: number[]): number {
227+
const n = garbage.length;
228+
const count = [0, 0, 0];
229+
const cs = ['G', 'P', 'M'];
230+
for (const s of garbage) {
231+
for (const c of s) {
232+
if (c === 'G') {
233+
count[0]++;
234+
} else if (c === 'P') {
235+
count[1]++;
236+
} else if (c === 'M') {
237+
count[2]++;
238+
}
239+
}
240+
}
226241

242+
let res = 0;
243+
for (let i = 0; i < 3; i++) {
244+
for (let j = 0; j < n; j++) {
245+
const s = garbage[j];
246+
for (const c of s) {
247+
if (c === cs[i]) {
248+
res++;
249+
count[i]--;
250+
}
251+
}
252+
if (count[i] === 0) {
253+
break;
254+
}
255+
res += travel[j];
256+
}
257+
}
258+
return res;
259+
}
227260
```
228261

229-
### **...**
262+
### **Rust**
263+
264+
```rust
265+
impl Solution {
266+
pub fn garbage_collection(garbage: Vec<String>, travel: Vec<i32>) -> i32 {
267+
let n = garbage.len();
268+
let cs = [b'M', b'P', b'G'];
269+
let mut count = [0, 0, 0];
270+
for s in garbage.iter() {
271+
for c in s.as_bytes().iter() {
272+
count[if c == &b'M' {
273+
0
274+
} else if c == &b'P' {
275+
1
276+
} else {
277+
2
278+
}] += 1;
279+
}
280+
}
281+
282+
let mut res = 0;
283+
for i in 0..3 {
284+
for j in 0..n {
285+
let s = &garbage[j];
286+
for c in s.as_bytes().iter() {
287+
if c == &cs[i] {
288+
res += 1;
289+
count[i] -= 1;
290+
}
291+
}
292+
if count[i] == 0 {
293+
break;
294+
}
230295

296+
res += travel[j];
297+
}
298+
}
299+
res
300+
}
301+
}
231302
```
232303

304+
### **...**
305+
306+
```
233307
234308
```
235309

0 commit comments

Comments
 (0)