Shopee 7.5 后端笔试 生命值

生命值 DFS 70%

import java.util.*;
public class Solution {
    int[][] DIRS = new int[][] {
            {0, 1}, {0, -1}, {1, 0}, {-1, 0}
    };
    boolean[][] visited;
    int M, N;
    int res;

    public int minimumInitHealth(int[][] rooms, int[] startPoint, int[] endPoint) {
        res = Integer.MIN_VALUE;

        M = rooms.length;
        N = rooms[0].length;
        visited = new boolean[M][N];

        dfs(rooms, startPoint[0], startPoint[1], endPoint[0], endPoint[1], 0, 0);
        return -res + 1;
    }

    private void dfs(int[][] rooms, int i, int j, int x, int y, int health, int minHealth) {
        health += rooms[i][j];
        minHealth = Math.min(minHealth, health);

        if (x == i && y == j) {
            res = Math.max(res, minHealth);
            return;
        }

        visited[i][j] = true;
        for (int w = 0; w < 4; w++) {
            int newI = i + DIRS[w][0];
            int newJ = j + DIRS[w][1];

            if (newI >= 0 && newI < M && newJ >= 0 && newJ < N && !visited[newI][newJ]) {
                dfs(rooms, newI, newJ, x, y, health, minHealth);
            }
        }
        visited[i][j] = false;
    }
}

请大佬指教。
#笔经##Shopee#
全部评论
我也是70%😥
点赞
送花
回复
分享
发布于 2021-07-05 17:48
70%+1
点赞
送花
回复
分享
发布于 2021-07-05 18:08
滴滴
校招火热招聘中
官网直投
dfs要剪枝不然超时
点赞
送花
回复
分享
发布于 2021-07-05 20:15
常规70% + 缓存10% = 80%
点赞
送花
回复
分享
发布于 2021-07-05 21:15
70% +1
点赞
送花
回复
分享
发布于 2021-07-07 20:37

相关推荐

1 6 评论
分享
牛客网
牛客企业服务