解题思路:
用map存储pieces数组中每个子数组第一个数字的位置,之后遍历arr数组,在map中是否存在,存在则遍历该数字所在的数组是否在arr中也是连续的,不连续或者不存在返回false,最后返回true,代码如下:
class Solution {
public:
bool canFormArray(vector<int>& arr, vector<vector<int>>& pieces) {
int n = pieces.size();
unordered_map<int, int> mp;
for(int i = 0; i < n; i ++) {
mp[pieces[i][0]] = i;
}
int index = 0;
while(index < arr.size()) {
if(mp.count(arr[index])) {
vector<int> temp = pieces[mp[arr[index]]];
for(int i = 0; i < temp.size(); i ++) {
if(arr[index ++] == temp[i]) {
continue;
} else return false;
}
} else {
return false;
}
}
return true;
}
};