1640. 能否连接形成数组JavaHashMap解决_i++

class Solution {
public boolean canFormArray(int[] arr, int[][] pieces) {
// 构造 HashMap O(1) 取值
Map<Integer, int[]> map = new HashMap<>();
for (int[] piece : pieces) {
map.put(piece[0], piece); //以单个piece数组的第一个元素为键,将每个piece数组存入map中
}
// 对单个 piece 数组,遍历对比
for (int i = 0; i < arr.length; ) {
int curVal = arr[i];
if (map.containsKey(curVal)) { //如果map集合中有这个元素作为第一个元素的数组
int[] piece = map.get(curVal); //获取这个数组
for (int value : piece) {
if (arr[i] == value) {
i++; //piece数组一直符合条件就一直加i,看arr的下一个元素,直到遍历完piece数组,再进行下一轮大循环
} else { //piece数组中有一个数不符合条件就返回false
return false;
}
}
} else { //如果map中每个数组的第一位没有arr[i]这个元素,则必定不能构成
return false;
}
}
return true;
}
}