File tree 4 files changed +104
-5
lines changed
solution/1600-1699/1640.Check Array Formation Through Concatenation
4 files changed +104
-5
lines changed Original file line number Diff line number Diff line change 62
62
<li><code>pieces</code> 中的整数 <strong>互不相同</strong>(也就是说,如果将 <code>pieces</code> 扁平化成一维数组,数组中的所有整数互不相同)</li>
63
63
</ul >
64
64
65
-
66
65
## 解法
67
66
68
67
<!-- 这里可写通用的实现逻辑 -->
69
68
69
+ “哈希表”实现。
70
+
70
71
<!-- tabs:start -->
71
72
72
73
### ** Python3**
73
74
74
75
<!-- 这里可写当前语言的特殊实现逻辑 -->
75
76
76
77
``` 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
78
91
```
79
92
80
93
### ** Java**
81
94
82
95
<!-- 这里可写当前语言的特殊实现逻辑 -->
83
96
84
97
``` 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
+ }
86
119
```
87
120
88
121
### ** ...**
Original file line number Diff line number Diff line change 66
66
### ** Python3**
67
67
68
68
``` 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
70
82
```
71
83
72
84
### ** Java**
73
85
74
86
``` 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
+ }
76
108
```
77
109
78
110
### ** ...**
Original file line number Diff line number Diff line change
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 number Diff line number Diff line change
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
You can’t perform that action at this time.
0 commit comments