[leetcode]807.Max Increase to Keep City Skyline

2023-05-16

In a 2 dimensional array grid, each value grid[i][j] represents the height of a building located there. We are allowed to increase the height of any number of buildings, by any amount (the amounts can be different for different buildings). Height 0 is considered to be a building as well. 

At the end, the "skyline" when viewed from all four directions of the grid, i.e. top, bottom, left, and right, must be the same as the skyline of the original grid. A city's skyline is the outer contour of the rectangles formed by all the buildings when viewed from a distance. See the following example.

What is the maximum total sum that the height of the buildings can be increased?

Example:
Input: grid = [[3,0,8,4],[2,4,5,7],[9,2,6,3],[0,3,1,0]]
Output: 35
Explanation: 
The grid is:
[ [3, 0, 8, 4], 
  [2, 4, 5, 7],
  [9, 2, 6, 3],
  [0, 3, 1, 0] ]

The skyline viewed from top or bottom is: [9, 4, 8, 7]
The skyline viewed from left or right is: [8, 7, 9, 3]

The grid after increasing the height of buildings without affecting skylines is:

gridNew = [ [8, 4, 8, 7],
            [7, 4, 7, 7],
            [9, 4, 8, 7],
            [3, 3, 3, 3] ]

Notes:

  • 1 < grid.length = grid[0].length <= 50.
  • All heights grid[i][j] are in the range [0, 100].
  • All buildings in grid[i][j] occupy the entire grid cell: that is, they are a 1 x 1 x grid[i][j] rectangular prism.
class Solution {
    public int maxIncreaseKeepingSkyline(int[][] grid) {
        int n = grid.length;
        int[] rowMaxes = new int[n];
        int[] colMaxes = new int[n];
        
        for (int r = 0; r < n; r++) {
            for (int c = 0; c < n; c++) {
                rowMaxes[r] = Math.max(rowMaxes[r], grid[r][c]);
                colMaxes[c] = Math.max(colMaxes[c], grid[r][c]);
            }
        }
        int res = 0;
        for (int r = 0; r < n; r++) {
            for (int c = 0; c < n; c++) {
                res += Math.min(rowMaxes[r], colMaxes[c]) - grid[r][c];
            }
        }
        return res;
        
    }
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[leetcode]807.Max Increase to Keep City Skyline 的相关文章

  • SSRS - OutOfMemoryException - 可以显示的行数是否有限制

    我创建了一个 rdl 文档 它指向一个返回 90 000 行的过程 但我遇到了内存不足的异常 报表项目可以处理的行数是否有限制 目前 我已经更改了驱动我的报告的过程 只选择前 90 000 行 我的规格是能够创建包含 120 000 行的报
  • 「优选算法刷题」:移动零

    嗨 这个假期罗根开始接触了算法 在为今年的蓝桥杯做准备 所以 开个新专栏 记录记录自己做算法题时的心得 一 题目 给定一个数组 nums 编写一个函数将所有 0 移动到数组的末尾 同时保持非零元素的相对顺序 请注意 必须在不复制数组的情况下
  • 如何获取数组中同一键的最大值

    如何获取数组中同一键的最大值 E x 我有这个数组 Array id gt 1 amount gt 4 Array id gt 1 amount gt 3 Array id gt 2 amount gt 3 我想要以下结果 意味着我想要相同
  • openCV 滤波器图像 - 用局部最大值替换内核

    关于我的问题的一些详细信息 我正在尝试在 openCV 中实现角点检测器 另一种内置算法 Canny Harris 等 我有一个充满响应值的矩阵 最大响应值为 检测到角点的最大概率为 我有一个问题 在一个点的附近检测到很少的角 但只有一个
  • 限制搜索建议的数量,android

    使用具有自定义搜索建议的搜索界面时 是否有办法限制显示的建议数量 Thanks 其实很简单 首先在你的ContentProvider 定义一个变量来引用 public static final String LIMIT PARAMETER
  • 如何从表中获取第二大或第三大条目[重复]

    这个问题在这里已经有答案了 谁能告诉我如何找到表中第 N 个最大的条目在甲骨文中 就像我们可以使用的最大的MAX 列名 有没有有效的方法来找到第n大的 SELECT FROM SELECT some column row number ov
  • 使用 Javascript 获取画布中的最大字体大小

    我正在绘制一个画布 需要在整个可用屏幕上 100 宽度和高度 我使用 JavaScript 设置画布的宽度和高度 如下所示 var w window innerWidth var h window innerHeight var canva
  • 快速搜索高斯核中最大值的坐标

    我有一个简单的代码 可以使用以下命令生成 2D 高斯内核scipy stats gaussian kde http docs scipy org doc scipy 0 13 0 reference generated scipy stat
  • 在 Ruby 语言的一个 if 语句中使用多个条件

    我用 Ruby 写了这样的东西 if a max a 0 brand b 0 elsif a max a 1 brand b 1 elsif a max a 2 brand b 2 elsif a max a 3 brand b 3 end
  • 已知尺寸的 JPEG 图像的最大文件大小

    我将让用户上传使用 JPEG 压缩的 300x300 图像 有没有办法确定此类图像的最大文件大小是多少 我可以想象这可以通过以 100 质量压缩随机噪声来尝试 但是有理论上的最大值吗 假设图像是完全不可压缩的随机噪声 它可以是每个像素 3
  • Excel公式查找其他单元格使用的引用

    有没有办法找出Excel中另一个单元格引用的单元格的地址 例如 单元格 C1 包含公式 max A A 并返回值 10 该值实际上引用单元格 A10 我可以在单元格 B 中使用返回 A10 的公式吗 不 我根本不想使用 VBA 假设您的条目
  • 查找数组中的最小值和最大值

    所以我试图找到用户输入的数组的最小值和最大值 这是我的代码 public static void main String args int a new int args length for int i 0 i lt args length
  • 使用 numpy nan 查找列表的最大值[重复]

    这个问题在这里已经有答案了 import numpy as np print max np nan 1 2 3 4 print max 1 2 3 4 np nan print max 1 2 3 np nan 4 第一个将打印 nan 作
  • 找到子对象的最大值

    在 javascript 中查找子对象的最大值的优雅方法是什么 Example 找到该对象的最大数量值 此处显示为 json density price 1 22837 quantity 48201 price 1 39837 quanti
  • R:如何获取时间序列数据中日期时间列的最大值

    我正在研究时间序列数据 我有 2 个日期时间列和 1 个会计周列 我给出了一个例子 我遇到如下情况 我需要获取 EditDate 的最大值 EditDate lt c 2015 04 01 11 40 13 2015 04 03 02 54
  • MySQL中查找id最大的行

    看一下下面名为 Articles 的 MySQL 表 id articleId version title content 1 1 0 0 ArticleNo 1 title v0 0 ArticleNo 1 content v0 0 2
  • C++ 求二维数组每一行的最大值

    我已经设法用这个找到我的二维数组的每一行的最小值 void findLowest int A Cm int n int m int min A 0 0 for int i 0 i lt n i for int j 0 j lt m j if
  • 查找重叠间隔序列中最大和的算法

    我试图解决的问题在数轴上有一个间隔列表 每个间隔都有一个预定义的分数 我需要返回最大可能的总分 问题是间隔重叠 并且重叠间隔中我只能使用一个 这是一个例子 Intervals Score 0 5 15 4 9 18 10 15 12 8 2
  • 查找字典中列表的最大值

    我有一个字典 每个键后面都有一个存储的列表 看起来像这样 dict with values u New York u New York u NY datetime datetime 2014 8 13 0 0 10 u New York u
  • 具有最大高度和滚动的动态内容的对话框+页脚CSS

    我有一个dialog with 位置 绝对 and a 最大高度放 这最大高度财产是set从外面by a javascript框架 jQuery UI 对话框 所以我无法控制它 里面有 2 个 div 其中一个充满了动态内容 and a 静

随机推荐

  • 背包问题详解

    1 0 1背包问题 问题描述 xff1a 有N件物品和一个容量为V的背包 第i件物品的重量是w i xff0c 价值是p i 求解将哪些物品装入背包可使这些物品的总重量不超过背包容量 xff0c 且价值总和最大 思路 xff1a 每种物品仅
  • 堆排序原理与实现

    堆排序实际上是利用堆的性质来进行排序的 xff0c 我们通常说的堆就是二叉堆 xff0c 二叉堆又称完全二叉树或者近似完全二叉树 堆排序是选择排序的一种 可以利用数组的特点快速定位指定索引的元素 数组可以根据索引直接获取元素 xff0c 时
  • Hashmap1.7和1.8区别+ConcurrentHashmap1.7和1.8区别

    Hashmap JDK1 7中 使用一个Entry数组来存储数据 xff0c 用key的hashcode取模来决定key会被放到数组里的位置 xff0c 如果hashcode相同 xff0c 或者hashcode取模后的结果相同 xff0c
  • TOP k问题

    题目 xff1a 有1千万条短信 xff0c 有重复 xff0c 以文本文件的形式保存 xff0c 一行一条 xff0c 有重复 请用5分钟时间 xff0c 找出重复出现最多的前10条 解析 xff1a 对于本题来说 xff0c 某些面试者
  • CAS操作是怎么实现的

    CAS是compare and swap xff0c 翻译过来就是比较并交换 维护三个变量值 xff0c 一个是内存值V xff0c 一个是期望的旧的值A xff0c 一个是要更新的值B 更新一个变量的时候 xff0c 只有当预期值A与内存
  • liunx在整合springboot 项目时出现错误CLUSTERDOWN The cluster is down

    在运行springboot项目并且把项目利用二级缓存 xff0c 储存到集群中时候在idea下报错显示CLUSTERDOWN The cluster is down 可以进入linux中查看集群配置 连接到某个节点此时显示此时节点明显显示的
  • volatile关键字

    java提供了一种稍弱的同步机制 xff0c volatile变量 xff0c 用来确保将变量的更新操作通知到其他线程 当把变量声明为volatile类型的时候 xff0c 编译器与运行时都会注意到这个变量是共享的 xff0c 所以不会将该
  • MVCC

    在并发读写数据库时 xff0c 读操作可能会不一致的数据 xff08 脏读 xff09 为了避免这种情况 xff0c 需要实现数据库的并发访问控制 xff0c 最简单的方式就是加锁访问 由于加锁会将读写操作串行化 xff0c 所以不会出现不
  • AQS理解

    AbstractQueuedSynchronizer简称AQS xff0c 是一个用于构建锁和同步容器的框架 事实上concurrent包内许多类都是基于AQS构建 xff0c 例如ReentrantLock Semaphere Count
  • B树、B+树及索引

    B树 xff1a 每个节点都存储key和data xff0c 所有节点组成这棵树 xff0c 并且叶子节点指针为null B 43 树 xff1a 只有叶子节点存储data xff0c 叶子节点包含了这棵树的所有键值 xff0c 叶子节点不
  • Arrays.sort和Collections.sort实现原理解析

    Collections sort方法底层就是调用的Arrays sort方法 写一个例子看源码 xff1a public static void main String args List lt String gt strings 61 A
  • Java代理模式之动态代理

    代理模式是设计模式中非常重要的一种类型 代理模式从类型上来说 xff0c 可以分为静态代理和动态代理两种类型 假设一个场景 xff0c 有一个蛋糕店 xff0c 卖的蛋糕都是用蛋糕机做的 xff0c 而且不同种类的蛋糕由不同的蛋糕机来做 x
  • 二叉树镜像

    求二叉树镜像 public class Solution public void Mirror TreeNode root if root 61 61 null return if root left 61 61 null amp amp
  • 设计模式之适配器模式

    适配器模式是作为两个不兼容的接口之间的桥梁 这种类型的设计模式属于结构型模式 xff0c 它结合了两个独立接口的功能 这种模式涉及到一个单一的类 xff0c 该类负责加入独立的或不兼容的接口功能 举个真实的例子 xff0c 读卡器是作为内存
  • 设计模式之单例模式

    1 懒汉式 xff0c 线程不安全 public class Demo1 private static Demo1 instance private Demo1 public static Demo1 getInstance if inst
  • Lambda表达式详解

    Java 8最值得学习的特性就是Lambda表达式 Lambda写的好可以极大减少代码冗余 xff0c 同时可读性也好过冗长的内部类 xff0c 匿名类 举例说明一下 xff1a xff08 1 xff09 创建线程传统写法 xff1a T
  • Android8.0以上实现APP(应用)开机自启动

    一 程序中实现APP开机自启动 可参考 xff1a https www cnblogs com jetereting p 4572302 html 二 设置APP开机自启动权限 小米手机设置开机启动应用权限 xff08 Android9 0
  • 跳台阶问题

    1 输出斐波那契数列的第n项 直接上代码 xff1a public class Fibonacci public static int fibonacci int n if n 61 61 0 return 0 if n 61 61 1 r
  • 字符串编辑距离

    字符串的编辑距离 xff0c 又称为Levenshtein距离 是利用字符操作 xff0c 把字符串A转换成字符串B所需要的最少操作数 其中 xff0c 字符操作包括 xff1a 删除一个字符插入一个字符修改一个字符 例如对于 34 hel
  • [leetcode]807.Max Increase to Keep City Skyline

    In a 2 dimensional array grid each value grid i j represents the height of a building located there We are allowed to in