题意:
给你一个整数数组 arr
,数组中的每个整数 互不相同 。另有一个由整数数组构成的数组 pieces
,其中的整数也 互不相同 。请你以 任意顺序 连接 pieces
中的数组以形成 arr
。但是,不允许 对每个数组 pieces[i]
中的整数重新排序。
如果可以连接 pieces
中的数组形成 arr
,返回 true
;否则,返回 false
。
解题思路:
判断每个数组的起始元素能否拼接到原数组上,然后 最后添加了多少个,是否与原数组元素个数相同即可
代码:
class Solution {
public:
bool canFormArray(vector<int>& arr, vector<vector<int>>& pieces) {
int sum = 0;
int n = arr.size();
int m = pieces.size();
for(int i = 0; i < n; i++) {
for(int j = 0; j < m; j++) {
if(arr[i] == pieces[j][0]) { // 二维数组的第一个元素与原数组中元素相同
int p = pieces[j].size();
for(int k = 0; k < p; k++) {
if(arr[i] == pieces[j][k]) {
sum++; // 判断多少个元素
i++;
}
}
i--;
}
}
}
if(sum == n) {
return true;
} else {
return false;
}
}
};