Daily LeetCode – day0055 1640. Check Array Formation Through Concatenation

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;
    }
}
学习笔记:
这道题本身不简单,主要他里面的数值保证全部不重复那就变成简单题了。
把每个小数组的头放入哈希表,把小数组的下标当成值。
之后就是循环根据头去查下标找到小数组,然后判断后面能不能对得上就行了。


关于樊轶群

一个善良的理想主义者。
此条目发表在每日LeetCode分类目录。将固定链接加入收藏夹。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注