使用队列的层次遍历求解leetcode 55跳跃问题

  • 可以构建一棵多叉树,树的每个结点的数值是数组的索引
  • 由于该题直接使用层次遍历,每层可能出现之前已经处理过的结点,因此可以使用标记数组进行剪枝。
if(nums.length<=1) return true;
        Queue<Integer> queue = new LinkedList<>();
        int[] flag = new int[nums.length];
        //先进行将位置0进行入队
        queue.add(0);
        flag[0] = 1;
        while (!queue.isEmpty()){
            int top = queue.poll();
            for(int i=1;i<=nums[top];i++){
                //在入队之前先进行判断
                if((top+i)==nums.length-1) return true;
                if(flag[top+i] == 0){
                    queue.add(top+i);
                    flag[top+i] = 1;
                }
            }
        }
        return false;

你可能感兴趣的:(leetcode题解)