无思路:Leetcode-1640. 能否连接形成数组

【JAVA】参考题解

1.思路是这样子的,先用哈希表的key存下pieces的每一行的第一个元素即p【0】,然后value存放相应的一维数组;

2.然后遍历arr数组,先查看每个值是否在map中,若存在,则找到相应的一维数组,然后遍历一维数组;若不存在返回false;

3.遍历一维数组的时候,若中间出现顺序或者值与arr当前值不一致的,返回false;

4.若顺序执行完两个for循环,返回true。

JAVA代码


class Solution {
    public boolean canFormArray(int[] arr, int[][] pieces) {
      Map<Integer,int[]> map = new HashMap();
      for(int[] p : pieces){
          map.put(p[0],p);
      }

      for(int i = 0;i < arr.length;){
         int curVal = arr[i];
         if(map.containsKey(curVal){
            int[] p = map.get(curVal);
            for(int j : p){
                  if(arr[i] == j){
                        i++;
                  }
                  else{
                        return false;
                  }
            }
         }else{
            return false;
          }
      }
      return true;
    }
}

原题目链接

posted @ 2020-11-03 22:49  acchris  阅读(93)  评论(0)    收藏  举报