Check Array Formation Through Concatenation
给一个arr, 里面是不同的数字, 给一个2d int数组pieces, 里面是不同的数字组合. 问pieces能不能组成arr.
这个题我map了第一个数和index. 然后查找
class Solution {
public boolean canFormArray(int[] arr, int[][] pieces) {
Map<Integer, Integer> map = new HashMap<>();
for(int i = 0; i < pieces.length; i++) {
map.putIfAbsent(pieces[i][0], i);
}
int i = 0;
while(i < arr.length) {
if(!map.containsKey(arr[i]))
return false;
int[] cur = pieces[map.get(arr[i])];
for(int c : cur) {
if(c != arr[i++]){
return false;
}
}
}
return true;
}
}