Skip to content

Commit ac66f50

Browse files
committed
feat: add solutions to lc problems: No.0599
No.0599.Minimum Index Sum of Two Lists
1 parent 00aaaa0 commit ac66f50

File tree

4 files changed

+143
-0
lines changed

4 files changed

+143
-0
lines changed

solution/0500-0599/0599.Minimum Index Sum of Two Lists/README.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,57 @@ func findRestaurant(list1 []string, list2 []string) []string {
162162
}
163163
```
164164

165+
### **TypeScript**
166+
167+
```ts
168+
function findRestaurant(list1: string[], list2: string[]): string[] {
169+
let minI = Infinity;
170+
const res = [];
171+
const map = new Map<string, number>(list1.map((s, i) => [s, i]));
172+
list2.forEach((s, i) => {
173+
if (map.has(s)) {
174+
const sumI = i + map.get(s);
175+
if (sumI <= minI) {
176+
if (sumI < minI) {
177+
minI = sumI;
178+
res.length = 0;
179+
}
180+
res.push(s);
181+
}
182+
}
183+
});
184+
return res;
185+
}
186+
```
187+
188+
### **Rust**
189+
190+
```rust
191+
use std::collections::HashMap;
192+
use std::iter::FromIterator;
193+
194+
impl Solution {
195+
pub fn find_restaurant(list1: Vec<String>, list2: Vec<String>) -> Vec<String> {
196+
let map: HashMap<String, usize> = HashMap::from_iter(list1.into_iter().zip(0..));
197+
let mut res = vec![];
198+
let mut min_i = usize::MAX;
199+
list2.into_iter().enumerate().for_each(|(i, key)| {
200+
if map.contains_key(&key) {
201+
let sum_i = map.get(&key).unwrap() + i;
202+
if sum_i <= min_i {
203+
if (sum_i < min_i) {
204+
min_i = sum_i;
205+
res.clear();
206+
}
207+
res.push(key);
208+
}
209+
}
210+
});
211+
res
212+
}
213+
}
214+
```
215+
165216
### **...**
166217

167218
```

solution/0500-0599/0599.Minimum Index Sum of Two Lists/README_EN.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,57 @@ func findRestaurant(list1 []string, list2 []string) []string {
146146
}
147147
```
148148

149+
### **TypeScript**
150+
151+
```ts
152+
function findRestaurant(list1: string[], list2: string[]): string[] {
153+
let minI = Infinity;
154+
const res = [];
155+
const map = new Map<string, number>(list1.map((s, i) => [s, i]));
156+
list2.forEach((s, i) => {
157+
if (map.has(s)) {
158+
const sumI = i + map.get(s);
159+
if (sumI <= minI) {
160+
if (sumI < minI) {
161+
minI = sumI;
162+
res.length = 0;
163+
}
164+
res.push(s);
165+
}
166+
}
167+
});
168+
return res;
169+
}
170+
```
171+
172+
### **Rust**
173+
174+
```rust
175+
use std::collections::HashMap;
176+
use std::iter::FromIterator;
177+
178+
impl Solution {
179+
pub fn find_restaurant(list1: Vec<String>, list2: Vec<String>) -> Vec<String> {
180+
let map: HashMap<String, usize> = HashMap::from_iter(list1.into_iter().zip(0..));
181+
let mut res = vec![];
182+
let mut min_i = usize::MAX;
183+
list2.into_iter().enumerate().for_each(|(i, key)| {
184+
if map.contains_key(&key) {
185+
let sum_i = map.get(&key).unwrap() + i;
186+
if sum_i <= min_i {
187+
if (sum_i < min_i) {
188+
min_i = sum_i;
189+
res.clear();
190+
}
191+
res.push(key);
192+
}
193+
}
194+
});
195+
res
196+
}
197+
}
198+
```
199+
149200
### **...**
150201

151202
```
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
use std::collections::HashMap;
2+
use std::iter::FromIterator;
3+
4+
impl Solution {
5+
pub fn find_restaurant(list1: Vec<String>, list2: Vec<String>) -> Vec<String> {
6+
let map: HashMap<String, usize> = HashMap::from_iter(list1.into_iter().zip(0..));
7+
let mut res = vec![];
8+
let mut min_i = usize::MAX;
9+
list2.into_iter().enumerate().for_each(|(i, key)| {
10+
if map.contains_key(&key) {
11+
let sum_i = map.get(&key).unwrap() + i;
12+
if sum_i <= min_i {
13+
if (sum_i < min_i) {
14+
min_i = sum_i;
15+
res.clear();
16+
}
17+
res.push(key);
18+
}
19+
}
20+
});
21+
res
22+
}
23+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
function findRestaurant(list1: string[], list2: string[]): string[] {
2+
let minI = Infinity;
3+
const res = [];
4+
const map = new Map<string, number>(list1.map((s, i) => [s, i]));
5+
list2.forEach((s, i) => {
6+
if (map.has(s)) {
7+
const sumI = i + map.get(s);
8+
if (sumI <= minI) {
9+
if (sumI < minI) {
10+
minI = sumI;
11+
res.length = 0;
12+
}
13+
res.push(s);
14+
}
15+
}
16+
});
17+
return res;
18+
}

0 commit comments

Comments
 (0)