跳格子游戏

  • 地上共有N个格子,你需要跳完地上所有的格子,但是格子间是有强依赖关系的,跳完前一个格子后,后续的格子才会被开启,
  • 格子间的依赖关系由多组steps数组给出,steps[0]表示前一个格子,steps[1]表示steps[0]可以开启的格子:
  • 比如[0,1]表示从跳完第0个格子以后第1个格子就开启了,
  • 比如[2,1],[2,3]表示跳完第2个格子后第1个格子和第3个格子就被开启了
  • import java.util.Arrays;
    public class Question36 {
        public static void main(String[] args) {
            int n = 4;
            int[][] arr = new int[][]{{0, 1},{0, 2},{0, 2}};
            System.out.println(answer(n, arr));
        }
        /**
         * @param n 表示地面上一共有n个格子
         * @param arr 给定一个数组,存放所有的step关系
         * @return 可以跳完输出yes,否则输出no
         */
        public static String answer(int n, int[][] arr){
            //对数组进行排序,
            Arrays.sort(arr, (o1, o2) -> {
                if (o1[0] == o2[0]){
                    return o1[1] - o2[1];
                }
                return o1[0] - o2[0];
            });
            //road 所有要跳的格子
            int[] road = new int[n];
            road[0] = 1;
            if (arr[0][0] != 0){
                return "NO";
            }
            //只能保证steps规则可以走完
            for (int[] ints : arr) {
                if (road[ints[0]] == 0) {
                    return "NO";
                } else {
                    road[ints[1]] = 1;
                }
            }
            for (int i = 0; i < n; i++) {
                if (road[i] == 0){
                    return "NO";
                }
            }
            return "YES";
        }
    }
    
    

    全部评论
    666666
    点赞
    送花
    回复
    分享
    发布于 2023-05-20 13:02 浙江

    相关推荐

    点赞 评论 收藏
    转发
    点赞 收藏 评论
    分享
    牛客网
    牛客企业服务