Skip to content

Commit 9540634

Browse files
committed
feat: add solutions to lc problem: No.1640. Check Array Formation Through Concatenation
1 parent 811ea36 commit 9540634

File tree

4 files changed

+104
-5
lines changed

4 files changed

+104
-5
lines changed

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

+36-3
Original file line numberDiff line numberDiff line change
@@ -62,27 +62,60 @@
6262
<li><code>pieces</code> 中的整数 <strong>互不相同</strong>(也就是说,如果将 <code>pieces</code> 扁平化成一维数组,数组中的所有整数互不相同)</li>
6363
</ul>
6464

65-
6665
## 解法
6766

6867
<!-- 这里可写通用的实现逻辑 -->
6968

69+
“哈希表”实现。
70+
7071
<!-- tabs:start -->
7172

7273
### **Python3**
7374

7475
<!-- 这里可写当前语言的特殊实现逻辑 -->
7576

7677
```python
77-
78+
class Solution:
79+
def canFormArray(self, arr: List[int], pieces: List[List[int]]) -> bool:
80+
mapper = {piece[0]: piece for piece in pieces}
81+
i, n = 0, len(arr)
82+
while i < n:
83+
if arr[i] not in mapper:
84+
return False
85+
vals = mapper[arr[i]]
86+
for val in vals:
87+
if arr[i] != val:
88+
return False
89+
i += 1
90+
return True
7891
```
7992

8093
### **Java**
8194

8295
<!-- 这里可写当前语言的特殊实现逻辑 -->
8396

8497
```java
85-
98+
class Solution {
99+
public boolean canFormArray(int[] arr, int[][] pieces) {
100+
Map<Integer, int[]> map = new HashMap<>();
101+
for (int[] piece : pieces) {
102+
map.put(piece[0], piece);
103+
}
104+
for (int i = 0; i < arr.length;) {
105+
int[] vals = map.get(arr[i]);
106+
if (vals == null) {
107+
return false;
108+
}
109+
for (int val : vals) {
110+
if (arr[i] != val) {
111+
return false;
112+
}
113+
++i;
114+
}
115+
}
116+
return true;
117+
}
118+
}
86119
```
87120

88121
### **...**

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

+34-2
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,45 @@
6666
### **Python3**
6767

6868
```python
69-
69+
class Solution:
70+
def canFormArray(self, arr: List[int], pieces: List[List[int]]) -> bool:
71+
mapper = {piece[0]: piece for piece in pieces}
72+
i, n = 0, len(arr)
73+
while i < n:
74+
if arr[i] not in mapper:
75+
return False
76+
vals = mapper[arr[i]]
77+
for val in vals:
78+
if arr[i] != val:
79+
return False
80+
i += 1
81+
return True
7082
```
7183

7284
### **Java**
7385

7486
```java
75-
87+
class Solution {
88+
public boolean canFormArray(int[] arr, int[][] pieces) {
89+
Map<Integer, int[]> map = new HashMap<>();
90+
for (int[] piece : pieces) {
91+
map.put(piece[0], piece);
92+
}
93+
for (int i = 0; i < arr.length;) {
94+
int[] vals = map.get(arr[i]);
95+
if (vals == null) {
96+
return false;
97+
}
98+
for (int val : vals) {
99+
if (arr[i] != val) {
100+
return false;
101+
}
102+
++i;
103+
}
104+
}
105+
return true;
106+
}
107+
}
76108
```
77109

78110
### **...**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Solution {
2+
public boolean canFormArray(int[] arr, int[][] pieces) {
3+
Map<Integer, int[]> map = new HashMap<>();
4+
for (int[] piece : pieces) {
5+
map.put(piece[0], piece);
6+
}
7+
for (int i = 0; i < arr.length;) {
8+
int[] vals = map.get(arr[i]);
9+
if (vals == null) {
10+
return false;
11+
}
12+
for (int val : vals) {
13+
if (arr[i] != val) {
14+
return false;
15+
}
16+
++i;
17+
}
18+
}
19+
return true;
20+
}
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution:
2+
def canFormArray(self, arr: List[int], pieces: List[List[int]]) -> bool:
3+
mapper = {piece[0]: piece for piece in pieces}
4+
i, n = 0, len(arr)
5+
while i < n:
6+
if arr[i] not in mapper:
7+
return False
8+
vals = mapper[arr[i]]
9+
for val in vals:
10+
if arr[i] != val:
11+
return False
12+
i += 1
13+
return True

0 commit comments

Comments
 (0)