Skip to content

Commit 9226546

Browse files
committed
feat: add solutions to lc problem: No.1640
No.1640.Check Array Formation Through Concatenation
1 parent 2c2b519 commit 9226546

File tree

4 files changed

+149
-0
lines changed

4 files changed

+149
-0
lines changed

solution/1600-1699/1640.Check Array Formation Through Concatenation/README.md

+53
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,59 @@ var canFormArray = function (arr, pieces) {
188188
};
189189
```
190190

191+
### **TypeScript**
192+
193+
```ts
194+
function canFormArray(arr: number[], pieces: number[][]): boolean {
195+
const n = arr.length;
196+
let i = 0;
197+
while (i < n) {
198+
const target = arr[i];
199+
const items = pieces.find(v => v[0] === target);
200+
if (items == null) {
201+
return false;
202+
}
203+
for (const item of items) {
204+
if (item !== arr[i]) {
205+
return false;
206+
}
207+
i++;
208+
}
209+
}
210+
return true;
211+
}
212+
```
213+
214+
### **Rust**
215+
216+
```rust
217+
use std::collections::HashMap;
218+
impl Solution {
219+
pub fn can_form_array(arr: Vec<i32>, pieces: Vec<Vec<i32>>) -> bool {
220+
let n = arr.len();
221+
let mut map = HashMap::new();
222+
for (i, v) in pieces.iter().enumerate() {
223+
map.insert(v[0], i);
224+
}
225+
let mut i = 0;
226+
while i < n {
227+
match map.get(&arr[i]) {
228+
None => return false,
229+
Some(&j) => {
230+
for &item in pieces[j].iter() {
231+
if item != arr[i] {
232+
return false;
233+
}
234+
i += 1;
235+
}
236+
}
237+
}
238+
}
239+
true
240+
}
241+
}
242+
```
243+
191244
### **...**
192245

193246
```

solution/1600-1699/1640.Check Array Formation Through Concatenation/README_EN.md

+53
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,59 @@ var canFormArray = function (arr, pieces) {
169169
};
170170
```
171171

172+
### **TypeScript**
173+
174+
```ts
175+
function canFormArray(arr: number[], pieces: number[][]): boolean {
176+
const n = arr.length;
177+
let i = 0;
178+
while (i < n) {
179+
const target = arr[i];
180+
const items = pieces.find(v => v[0] === target);
181+
if (items == null) {
182+
return false;
183+
}
184+
for (const item of items) {
185+
if (item !== arr[i]) {
186+
return false;
187+
}
188+
i++;
189+
}
190+
}
191+
return true;
192+
}
193+
```
194+
195+
### **Rust**
196+
197+
```rust
198+
use std::collections::HashMap;
199+
impl Solution {
200+
pub fn can_form_array(arr: Vec<i32>, pieces: Vec<Vec<i32>>) -> bool {
201+
let n = arr.len();
202+
let mut map = HashMap::new();
203+
for (i, v) in pieces.iter().enumerate() {
204+
map.insert(v[0], i);
205+
}
206+
let mut i = 0;
207+
while i < n {
208+
match map.get(&arr[i]) {
209+
None => return false,
210+
Some(&j) => {
211+
for &item in pieces[j].iter() {
212+
if item != arr[i] {
213+
return false;
214+
}
215+
i += 1;
216+
}
217+
}
218+
}
219+
}
220+
true
221+
}
222+
}
223+
```
224+
172225
### **...**
173226

174227
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
use std::collections::HashMap;
2+
impl Solution {
3+
pub fn can_form_array(arr: Vec<i32>, pieces: Vec<Vec<i32>>) -> bool {
4+
let n = arr.len();
5+
let mut map = HashMap::new();
6+
for (i, v) in pieces.iter().enumerate() {
7+
map.insert(v[0], i);
8+
}
9+
let mut i = 0;
10+
while i < n {
11+
match map.get(&arr[i]) {
12+
None => return false,
13+
Some(&j) => {
14+
for &item in pieces[j].iter() {
15+
if item != arr[i] {
16+
return false;
17+
}
18+
i += 1;
19+
}
20+
}
21+
}
22+
}
23+
true
24+
}
25+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
function canFormArray(arr: number[], pieces: number[][]): boolean {
2+
const n = arr.length;
3+
let i = 0;
4+
while (i < n) {
5+
const target = arr[i];
6+
const items = pieces.find(v => v[0] === target);
7+
if (items == null) {
8+
return false;
9+
}
10+
for (const item of items) {
11+
if (item !== arr[i]) {
12+
return false;
13+
}
14+
i++;
15+
}
16+
}
17+
return true;
18+
}

0 commit comments

Comments
 (0)