LeetCode 807. 保持城市天际线

时间:2020-05-30
本文章向大家介绍LeetCode 807. 保持城市天际线,主要包括LeetCode 807. 保持城市天际线使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

https://leetcode-cn.com/problems/max-increase-to-keep-city-skyline/
这个题没啥意思,标着medium,其实就是easy难度。
一开始我分别用了两个循环去找行最高值和列最高值,提交之后才意识到其实这两个可以合在一起找。但是效率好像并没有提高多少,毕竟都是O(n^2)级别。

    /**
     * 807.
     * 其实这个题也很好理解,就是去找同一行、同一列中最大的值,然后另起一个循环,去找一当前行、列中的最大值的较小值,看这个较小值和当前高度之差。
     * @param grid
     * @return
     */
    public int maxIncreaseKeepingSkyline(int[][] grid) {
        int sum = 0;
        int[] cHigh = new int[grid[0].length];
        int[] rHigh = new int[grid.length];
        for(int i = 0; i < grid.length; i++){
            for (int j = 0; j < grid[0].length; j++){
                rHigh[i] = Math.max(rHigh[i],grid[i][j]);
                cHigh[j] = Math.max(cHigh[j],grid[i][j]);
            }
        }
        for(int i = 0; i < grid.length; i++){
            for (int j = 0; j < grid[i].length; j++){
                sum += (Math.min(rHigh[i],cHigh[j]) - grid[i][j]);
            }
        }
        return sum;
    }

原文地址:https://www.cnblogs.com/ZJPaang/p/12994044.html