跳到主要内容

1764.通过连接另一个数组的子数组得到一个数组

链接:1764.通过连接另一个数组的子数组得到一个数组
难度:Medium
标签:贪心、数组、双指针、字符串匹配
简介:给你一个长度为 n 的二维整数数组 groups ,同时给你一个整数数组 nums 。如果你可以找出这样的 n 个子数组,请你返回 true ,否则返回 false 。

题解 1 - cpp

  • 编辑时间:2022-12-17
  • 执行用时:100ms
  • 内存消耗:71.7MB
  • 编程语言:cpp
  • 解法介绍:遍历。
class Solution {
public:
bool canChoose(vector<vector<int>>& groups, vector<int>& nums) {
auto check = [&](int igroup, int inum) -> bool {
int i = 0;
for (; i < groups[igroup].size() && inum < nums.size(); i++, inum++)
if (groups[igroup][i] != nums[inum]) return false;
return i == groups[igroup].size();
};
int j = 0;
for (int i = 0; i < groups.size(); i++) {
while (j < nums.size() && (nums[j] != groups[i][0] || !check(i, j))) j++;
if (j == nums.size()) return false;
j += groups[i].size();
}
return true;
}
};