// 1764. Form Array by Concatenating Subarrays of Another Array
class Solution {
public boolean canChoose(int[][] groups, int[] nums) {
int i = 0;
int j = 0;
while (i < groups.length && j < nums.length) {
while (j < nums.length && groups[i][0] != nums[j]) {
++j;
}
if (isSame(groups[i], nums, j)) {
j += groups[i].length;
++i;
} else {
++j;
}
}
return groups.length == i;
}
private boolean isSame(int[] group, int[] nums, int start) {
if (nums.length - start < group.length) {
return false;
}
for (int i = 1; i < group.length; ++i) {
if (group[i] != nums[start + i]) {
return false;
}
}
return true;
}
}
学习笔记:
和昨天一样是贪心算法的题目,同样也是中等难度。
同时也是二维数组的题目。
不过今天这题的代码明显要复杂,道理简单好理解,但是实现起来要考虑各种细节怎么运算。