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

相关推荐

点赞 评论 收藏
分享
2024-11-28 22:27
已编辑
西南交通大学 Java
Kensley:交大的学弟,整体挺好的 稍微有点乱可以考虑做减法了 并发和java可以合一起,知识上补充一下Redis集群技术的死角,主从,Sentinel,Cluster。 大计基改成课程就行:《计算机网络》《操作系统原理》《数据结构》《算法》。 最重要的,项目还要再挖掘,要用【问题/场景】驱动开发,效果放在最后一句就行,“基于XXX/集成XXX实现XXX功能,【解决XXX问题】,效果XXX”,比如基于Redis实现商品信息的读缓存,解决了浏览高峰时因高频访问MySQL偶发卡顿的问题,体感性能上升30% 排版相关的:1. 大段文本要做提炼,比如“XXX等有基本的了解”改为“了解XXX”,文本相关都可以喂给GPT看看精简效果;2.黑体粗有点多,长文本和奖项的加粗去掉,奖项的时间不用列;3. 项目和实习的时间挪到后面,保持一致
点赞 评论 收藏
分享
评论
1
6
分享

创作者周榜

更多
牛客网
牛客企业服务