注意点
1、判断数组 groups[i]
是否和 数组nums
以 k
为起点的子数组 存在匹配
2、判断g
是否匹配完
3、需要注意的是 nums
的循环在外面
class Solution {
public:
// 判断数组 groups[i] 是否和 数组nums 以 k 为起点的子数组 存在匹配
bool check(vector<int>&g, vector<int>&nums, int k){
int t = k, i = 0;
while(i<g.size() && k<nums.size()){
if(g[i++]!=nums[k++]) return false;
}
// 判断g是否匹配完
if(k-t == g.size()) return true;
return false;
}
bool canChoose(vector<vector<int>>& groups, vector<int>& nums) {
int k = 0, res = 0;
// 需要注意的是 nums的循环在外面
for(int i=0;i<nums.size();i++){
if(check(groups[k], nums, i)){
i += groups[k].size()-1;
k++;
if(k==groups.size()) return true;
}
}
return false;
}
};