LeetCode1640 能否连接形成数组[Map] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode1640 能否连接形成数组[Map] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。

解题思路:
用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;
    
;

以上是关于LeetCode1640 能否连接形成数组[Map] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode周赛#213

LeetCode刷题(157)~判断能否形成等差数列

LeetCode:1502. 判断能否形成等差数列(python3,javascript)

[Leetcode Weekly Contest]196

LeetCode刷题1502-简单-判断能否形成等差数列

LeetCode刷题1502-简单-判断能否形成等差数列