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;
    }
}