import java.util.HashMap;
// 1640. Check Array Formation Through Concatenation
class Solution {
public boolean canFormArray(int[] arr, int[][] pieces) {
HashMap<Integer, Integer> headIndex = new HashMap<>();
for (int i = 0; i < pieces.length; ++i) {
headIndex.put(pieces[i][0], i);
}
for (int i = 0; i < arr.length; ) {
if (headIndex.containsKey(arr[i])) {
Integer index = headIndex.get(arr[i]);
headIndex.remove(arr[i]);
for (int j = 0; j < pieces[index].length && i < arr.length; ++j) {
if (arr[i] == pieces[index][j]) {
++i;
} else {
return false;
}
}
} else {
return false;
}
}
return true;
}
}
学习笔记:
这道题本身不简单,主要他里面的数值保证全部不重复那就变成简单题了。
把每个小数组的头放入哈希表,把小数组的下标当成值。
之后就是循环根据头去查下标找到小数组,然后判断后面能不能对得上就行了。