Back
Featured image of post Least Bricks

Least Bricks

Leetcode-554

Leetcode 554

大家好,我是mz

这是2021.5.2的每日一题554. 砖墙

题目要求一条自顶向下 的、穿过 最少 砖块的垂线 , 也可以理解为 总行数- 间隙最多

这样就可以得出穿过最少砖块的路线

我选择用了 [哈希表] 去记录了每个间隙所生成的位置 , 然后用Math.max去寻找最大间隙.

public int leastBricks(List<List<Integer>> wall) {
    Map<Integer , Integer> map = new HashMap<>();

    for (List<Integer> widths:wall){
        int n = widths.size();
        int sum = 0;
        for (int i = 0; i < n - 1; i++) {
            sum += widths.get(i);
            map.put(sum , map.getOrDefault(sum , 0) + 1);//记录间隙位置
        }
    }

    int cnt = 0;
    for (Map.Entry<Integer , Integer> entry : map.entrySet()){	
        cnt = Math.max(cnt , entry.getValue());//对比间隙
    }

    return wall.size() - cnt;
}

时间复杂度:O(nm) nn 是砖墙的高度,mm 是每行砖墙的砖的平均数量

空间复杂度:O(nm)

Welcome to the world of Minezeratul