1640 Check Array Formation Through Concatenation
You are given an array of distinct integers arr
and an array of integer arrays pieces
, where the integers in pieces
are distinct. Your goal is to form arr
by concatenating the arrays in pieces
in any order. However, you are not allowed to reorder the integers in each array pieces[i]
.
Return true
if it is possible to form the array arr
from pieces
. Otherwise, return false
.
Example 1:
Example 2:
Example 3:
Example 4:
Example 5:
Constraints:
1 <= pieces.length <= arr.length <= 100
sum(pieces[i].length) == arr.length
1 <= pieces[i].length <= arr.length
1 <= arr[i], pieces[i][j] <= 100
The integers in
arr
are distinct.The integers in
pieces
are distinct (i.e., If we flatten pieces in a 1D array, all the integers in this array are distinct).
嗯,这题呢,一开始看就觉得好像只有brute force了,后来看了答案,好像真的没有什么更好的拼法。brute force就是一边按顺序拿arr里的数跟可能开始的piece对,如果找到了,就往下比对subarr。一边增加arrIndex一边比对。最后return是否找到arrIndex长度等长的数。这是因为我们有可能有更多的piece。譬如第三个栗子,如果改成【[49], [18], [16, 18, 49]】我们最后判断就要用length了。
这里因为是unique的pieces然后要快速找到,所以就想到了set。因为我们要记录位置,所以用了map。S:O(n), T:O(m),n是arr长度,m是所有pieces加起来的总数
Last updated