Skip to content

Commit 898aa51

Browse files
authored
feat: add solutions to lc problems: No.2798~2800 (#1513)
1 parent ea643fb commit 898aa51

File tree

9 files changed

+383
-0
lines changed

9 files changed

+383
-0
lines changed

solution/2700-2799/2798.Number of Employees Who Met the Target/README.md

+16
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,22 @@ function numberOfEmployeesWhoMetTarget(
133133
}
134134
```
135135

136+
### **Rust**
137+
138+
```rust
139+
impl Solution {
140+
pub fn number_of_employees_who_met_target(hours: Vec<i32>, target: i32) -> i32 {
141+
let mut ans = 0;
142+
for &v in hours.iter() {
143+
if v >= target {
144+
ans += 1;
145+
}
146+
}
147+
ans
148+
}
149+
}
150+
```
151+
136152
### **...**
137153

138154
```

solution/2700-2799/2798.Number of Employees Who Met the Target/README_EN.md

+16
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,22 @@ function numberOfEmployeesWhoMetTarget(
117117
}
118118
```
119119

120+
### **Rust**
121+
122+
```rust
123+
impl Solution {
124+
pub fn number_of_employees_who_met_target(hours: Vec<i32>, target: i32) -> i32 {
125+
let mut ans = 0;
126+
for &v in hours.iter() {
127+
if v >= target {
128+
ans += 1;
129+
}
130+
}
131+
ans
132+
}
133+
}
134+
```
135+
120136
### **...**
121137

122138
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
impl Solution {
2+
pub fn number_of_employees_who_met_target(hours: Vec<i32>, target: i32) -> i32 {
3+
let mut ans = 0;
4+
for &v in hours.iter() {
5+
if v >= target {
6+
ans += 1;
7+
}
8+
}
9+
ans
10+
}
11+
}

solution/2700-2799/2799.Count Complete Subarrays in an Array/README.md

+52
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,58 @@ function countCompleteSubarrays(nums: number[]): number {
299299
}
300300
```
301301

302+
### **Rust**
303+
304+
```rust
305+
use std::collections::HashSet;
306+
impl Solution {
307+
pub fn count_complete_subarrays(nums: Vec<i32>) -> i32 {
308+
let mut set: HashSet<&i32> = nums.iter().collect();
309+
let n = nums.len();
310+
let m = set.len();
311+
let mut ans = 0;
312+
for i in 0..n {
313+
set.clear();
314+
for j in i..n {
315+
set.insert(&nums[j]);
316+
if set.len() == m {
317+
ans += n - j;
318+
break;
319+
}
320+
}
321+
}
322+
ans as i32
323+
}
324+
}
325+
```
326+
327+
```rust
328+
use std::collections::HashMap;
329+
use std::collections::HashSet;
330+
impl Solution {
331+
pub fn count_complete_subarrays(nums: Vec<i32>) -> i32 {
332+
let n = nums.len();
333+
let m = nums.iter().collect::<HashSet<&i32>>().len();
334+
let mut map = HashMap::new();
335+
let mut ans = 0;
336+
let mut i = 0;
337+
for j in 0..n {
338+
*map.entry(nums[j]).or_insert(0) += 1;
339+
while map.len() == m {
340+
ans += n - j;
341+
let v = map.entry(nums[i]).or_default();
342+
*v -= 1;
343+
if *v == 0 {
344+
map.remove(&nums[i]);
345+
}
346+
i += 1;
347+
}
348+
}
349+
ans as i32
350+
}
351+
}
352+
```
353+
302354
### **...**
303355

304356
```

solution/2700-2799/2799.Count Complete Subarrays in an Array/README_EN.md

+52
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,58 @@ function countCompleteSubarrays(nums: number[]): number {
271271
}
272272
```
273273

274+
### **Rust**
275+
276+
```rust
277+
use std::collections::HashSet;
278+
impl Solution {
279+
pub fn count_complete_subarrays(nums: Vec<i32>) -> i32 {
280+
let mut set: HashSet<&i32> = nums.iter().collect();
281+
let n = nums.len();
282+
let m = set.len();
283+
let mut ans = 0;
284+
for i in 0..n {
285+
set.clear();
286+
for j in i..n {
287+
set.insert(&nums[j]);
288+
if set.len() == m {
289+
ans += n - j;
290+
break;
291+
}
292+
}
293+
}
294+
ans as i32
295+
}
296+
}
297+
```
298+
299+
```rust
300+
use std::collections::HashMap;
301+
use std::collections::HashSet;
302+
impl Solution {
303+
pub fn count_complete_subarrays(nums: Vec<i32>) -> i32 {
304+
let n = nums.len();
305+
let m = nums.iter().collect::<HashSet<&i32>>().len();
306+
let mut map = HashMap::new();
307+
let mut ans = 0;
308+
let mut i = 0;
309+
for j in 0..n {
310+
*map.entry(nums[j]).or_insert(0) += 1;
311+
while map.len() == m {
312+
ans += n - j;
313+
let v = map.entry(nums[i]).or_default();
314+
*v -= 1;
315+
if *v == 0 {
316+
map.remove(&nums[i]);
317+
}
318+
i += 1;
319+
}
320+
}
321+
ans as i32
322+
}
323+
}
324+
```
325+
274326
### **...**
275327

276328
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
use std::collections::HashMap;
2+
use std::collections::HashSet;
3+
impl Solution {
4+
pub fn count_complete_subarrays(nums: Vec<i32>) -> i32 {
5+
let n = nums.len();
6+
let m = nums.iter().collect::<HashSet<&i32>>().len();
7+
let mut map = HashMap::new();
8+
let mut ans = 0;
9+
let mut i = 0;
10+
for j in 0..n {
11+
*map.entry(nums[j]).or_insert(0) += 1;
12+
while map.len() == m {
13+
ans += n - j;
14+
let v = map.entry(nums[i]).or_default();
15+
*v -= 1;
16+
if *v == 0 {
17+
map.remove(&nums[i]);
18+
}
19+
i += 1;
20+
}
21+
}
22+
ans as i32
23+
}
24+
}

solution/2800-2899/2800.Shortest String That Contains Three Strings/README.md

+87
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,93 @@ func min(a, b int) int {
196196
}
197197
```
198198

199+
### **TypeScript**
200+
201+
```ts
202+
function minimumString(a: string, b: string, c: string): string {
203+
const f = (s: string, t: string): string => {
204+
if (s.includes(t)) {
205+
return s;
206+
}
207+
if (t.includes(s)) {
208+
return t;
209+
}
210+
const m = s.length;
211+
const n = t.length;
212+
for (let i = Math.min(m, n); i > 0; --i) {
213+
if (s.slice(-i) === t.slice(0, i)) {
214+
return s + t.slice(i);
215+
}
216+
}
217+
return s + t;
218+
};
219+
const s: string[] = [a, b, c];
220+
const perm: number[][] = [
221+
[0, 1, 2],
222+
[0, 2, 1],
223+
[1, 0, 2],
224+
[1, 2, 0],
225+
[2, 0, 1],
226+
[2, 1, 0],
227+
];
228+
let ans = '';
229+
for (const [i, j, k] of perm) {
230+
const t = f(f(s[i], s[j]), s[k]);
231+
if (
232+
ans === '' ||
233+
t.length < ans.length ||
234+
(t.length === ans.length && t < ans)
235+
) {
236+
ans = t;
237+
}
238+
}
239+
return ans;
240+
}
241+
```
242+
243+
### **Rust**
244+
245+
```rust
246+
impl Solution {
247+
fn f(s1: String, s2: String) -> String {
248+
if s1.contains(&s2) {
249+
return s1;
250+
}
251+
if s2.contains(&s1) {
252+
return s2;
253+
}
254+
for i in 0..s1.len() {
255+
let s = &s1[i..];
256+
if s2.starts_with(s) {
257+
let n = s.len();
258+
return s1 + &s2[n..];
259+
}
260+
}
261+
s1 + s2.as_str()
262+
}
263+
264+
pub fn minimum_string(a: String, b: String, c: String) -> String {
265+
let s = [&a, &b, &c];
266+
let perm = [
267+
[0, 1, 2],
268+
[0, 2, 1],
269+
[1, 0, 2],
270+
[1, 2, 0],
271+
[2, 0, 1],
272+
[2, 1, 0],
273+
];
274+
let mut ans = String::new();
275+
for [i, j, k] in perm.iter() {
276+
let r = Self::f(Self::f(s[*i].clone(), s[*j].clone()), s[*k].clone());
277+
if ans == "" || r.len() < ans.len() || (r.len() == ans.len() && r < ans) {
278+
ans = r;
279+
}
280+
}
281+
ans
282+
}
283+
}
284+
```
285+
199286
### **...**
200287

201288
```

solution/2800-2899/2800.Shortest String That Contains Three Strings/README_EN.md

+87
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,93 @@ func min(a, b int) int {
182182
}
183183
```
184184

185+
### **TypeScript**
186+
187+
```ts
188+
function minimumString(a: string, b: string, c: string): string {
189+
const f = (s: string, t: string): string => {
190+
if (s.includes(t)) {
191+
return s;
192+
}
193+
if (t.includes(s)) {
194+
return t;
195+
}
196+
const m = s.length;
197+
const n = t.length;
198+
for (let i = Math.min(m, n); i > 0; --i) {
199+
if (s.slice(-i) === t.slice(0, i)) {
200+
return s + t.slice(i);
201+
}
202+
}
203+
return s + t;
204+
};
205+
const s: string[] = [a, b, c];
206+
const perm: number[][] = [
207+
[0, 1, 2],
208+
[0, 2, 1],
209+
[1, 0, 2],
210+
[1, 2, 0],
211+
[2, 0, 1],
212+
[2, 1, 0],
213+
];
214+
let ans = '';
215+
for (const [i, j, k] of perm) {
216+
const t = f(f(s[i], s[j]), s[k]);
217+
if (
218+
ans === '' ||
219+
t.length < ans.length ||
220+
(t.length === ans.length && t < ans)
221+
) {
222+
ans = t;
223+
}
224+
}
225+
return ans;
226+
}
227+
```
228+
229+
### **Rust**
230+
231+
```rust
232+
impl Solution {
233+
fn f(s1: String, s2: String) -> String {
234+
if s1.contains(&s2) {
235+
return s1;
236+
}
237+
if s2.contains(&s1) {
238+
return s2;
239+
}
240+
for i in 0..s1.len() {
241+
let s = &s1[i..];
242+
if s2.starts_with(s) {
243+
let n = s.len();
244+
return s1 + &s2[n..];
245+
}
246+
}
247+
s1 + s2.as_str()
248+
}
249+
250+
pub fn minimum_string(a: String, b: String, c: String) -> String {
251+
let s = [&a, &b, &c];
252+
let perm = [
253+
[0, 1, 2],
254+
[0, 2, 1],
255+
[1, 0, 2],
256+
[1, 2, 0],
257+
[2, 0, 1],
258+
[2, 1, 0],
259+
];
260+
let mut ans = String::new();
261+
for [i, j, k] in perm.iter() {
262+
let r = Self::f(Self::f(s[*i].clone(), s[*j].clone()), s[*k].clone());
263+
if ans == "" || r.len() < ans.len() || (r.len() == ans.len() && r < ans) {
264+
ans = r;
265+
}
266+
}
267+
ans
268+
}
269+
}
270+
```
271+
185272
### **...**
186273

187274
```

0 commit comments

Comments
 (0)