【LeetCode每日一题】——807.保持城市天际线

文章目录

  • 一【题目类别】
  • 二【题目难度】
  • 三【题目编号】
  • 四【题目描述】
  • 五【题目示例】
  • 六【题目提示】
  • 七【解题思路】
  • 八【时间频度】
  • 九【代码实现】
  • 十【提交结果】

一【题目类别】

  • 矩阵

二【题目难度】

  • 中等

三【题目编号】

  • 1572.矩阵对角线元素的和

四【题目描述】

  • 给你一座由 n x n 个街区组成的城市,每个街区都包含一座立方体建筑。给你一个下标从 0 开始的 n x n 整数矩阵 grid ,其中 grid[r][c] 表示坐落于 r 行 c 列的建筑物的 高度 。
  • 城市的 天际线 是从远处观察城市时,所有建筑物形成的外部轮廓。从东、南、西、北四个主要方向观测到的 天际线 可能不同。
  • 我们被允许为 任意数量的建筑物 的高度增加 任意增量(不同建筑物的增量可能不同) 。 高度为 0 的建筑物的高度也可以增加。然而,增加的建筑物高度 不能影响 从任何主要方向观察城市得到的 天际线 。
  • 在 不改变 从任何主要方向观测到的城市 天际线 的前提下,返回建筑物可以增加的 最大高度增量总和 。

五【题目示例】

  • 示例 1:

    • 在这里插入图片描述
    • 输入:grid = [[3,0,8,4],[2,4,5,7],[9,2,6,3],[0,3,1,0]]
    • 输出:35
    • 解释:建筑物的高度如上图中心所示。用红色绘制从不同方向观看得到的天际线。在不影响天际线的情况下,增加建筑物的高度:gridNew = [ [8, 4, 8, 7],
                                           [7, 4, 7, 7],
                                           [9, 4, 8, 7],
                                           [3, 3, 3, 3] ]
  • 示例 2:

    • 输入:grid = [[0,0,0],[0,0,0],[0,0,0]]
    • 输出:0
    • 解释:增加任何建筑物的高度都会导致天际线的变化。

六【题目提示】

  • n = = g r i d . l e n g t h n == grid.length n==grid.length
  • n = = g r i d [ r ] . l e n g t h n == grid[r].length n==grid[r].length
  • 2 < = n < = 50 2 <= n <= 50 2<=n<=50
  • 0 < = g r i d [ r ] [ c ] < = 100 0 <= grid[r][c] <= 100 0<=grid[r][c]<=100

七【解题思路】

  • 这道题主要是要理解题意,这道题的意思是找出每一行和每一列的最大值,然后看每一个元素增加多少高度不会超过当前这个元素所处行和列最大值中的最小值,这样就不会破坏每个方向观测到的“天际线”
  • 所以我们就遍历整个二维数组,找到每一行和每一列的最大值
  • 然后计算当前元素增加多少高度不会超过当前这个元素所处行和列最大值中的最小值
  • 对二维矩阵中的每个元素都进行上面的操作,然后求和
  • 最后返回结果即可

八【时间频度】

  • 时间复杂度: O ( n 2 ) O(n^2) O(n2) n n n为传入的正方形数组的长度
  • 空间复杂度: O ( n ) O(n) O(n) n n n为传入的正方形数组的长度

九【代码实现】

  1. Java语言版
class Solution {public int maxIncreaseKeepingSkyline(int[][] grid) {int n = grid.length;int res = 0;int[] rawMax = new int[n];int[] colMax = new int[n];for(int i = 0;i < n;i++){for(int j = 0;j < n;j++){rawMax[i] = Math.max(rawMax[i],grid[i][j]);colMax[j] = Math.max(colMax[j],grid[i][j]);}}for(int i = 0;i < n;i++){for(int j = 0;j < n;j++){res += Math.min((rawMax[i] - grid[i][j]),(colMax[j] - grid[i][j]));}}return res;}
}
  1. C语言版
int maxIncreaseKeepingSkyline(int** grid, int gridSize, int* gridColSize)
{int n = gridSize;int res = 0;int* rawMax = (int*)calloc(n, sizeof(int));int* colMax = (int*)calloc(n, sizeof(int));for(int i = 0;i < n;i++){for(int j = 0;j < n;j++){rawMax[i] = fmax(rawMax[i], grid[i][j]);colMax[j] = fmax(colMax[j], grid[i][j]);}}for(int i = 0;i < n;i++){for(int j = 0;j < n;j++){res += fmin(rawMax[i] - grid[i][j], colMax[j] - grid[i][j]);}}return res;
}
  1. Python语言版
class Solution:def maxIncreaseKeepingSkyline(self, grid: List[List[int]]) -> int:n = len(grid)res = 0rawMax = [0] * ncolMax = [0] * nfor i in range(0, n):for j in range(0, n):rawMax[i] = max(rawMax[i],grid[i][j])colMax[j] = max(colMax[j],grid[i][j])for i in range(0, n):for j in range(0, n):res += min(rawMax[i] - grid[i][j], colMax[j] - grid[i][j])return res
  1. C++语言版
class Solution {
public:int maxIncreaseKeepingSkyline(vector<vector<int>>& grid) {int n = grid.size();int res = 0;vector<int> rawMax(n);vector<int> colMax(n);for(int i = 0;i < n;i++){for(int j = 0;j < n;j++){rawMax[i] = fmax(rawMax[i],grid[i][j]);colMax[j] = fmax(colMax[j],grid[i][j]);}}for(int i = 0;i < n;i++){for(int j = 0;j < n;j++){res += fmin(rawMax[i] - grid[i][j],colMax[j] - grid[i][j]);}}return res;}
};

十【提交结果】

  1. Java语言版
    在这里插入图片描述

  2. C语言版
    在这里插入图片描述

  3. Python语言版
    在这里插入图片描述

  4. C++语言版
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/18701.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PowerDesigner中table视图显示code与name

问题描述 使用PowerDesigner做数据库设计&#xff0c;要做评审&#xff0c;默认整体效果没有name显示&#xff0c;很不方便 1、右键单击&#xff0c;选择display 2、table->advanced 3、设置columns&#xff0c;点击右边的放大镜 4、自定义你需要显示的组件 效果图

性能测试/负载测试/压力测试之间的区别

做测试一年多来&#xff0c;虽然平时的工作都能很好的完成&#xff0c;但最近突然发现自己在关于测试的整体知识体系上面的了解很是欠缺&#xff0c;所以&#xff0c;在工作之余也做了一些测试方面的知识的补充。不足之处&#xff0c;还请大家多多交流&#xff0c;互相学习。 …

python-网络爬虫.BS4

BS4 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库&#xff0c; 它能够通过你喜欢的转换器实现惯用的文档导航、查找、修改文档的方 式。 Beautiful Soup 4 官方文档&#xff1a;https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/ 帮助手册&…

Appium+python自动化(三十五)- 命令启动appium之 appium服务命令行参数(超详解)

简介 前边介绍的都是通过按钮点击启动按钮来启动appium服务&#xff0c;有的小伙伴或者童鞋们乍一听可能不信&#xff0c;或者会问如何通过命令行启动appium服务呢&#xff1f;且听一一道来。 一睹为快 其实相当的简单&#xff0c;不看不知道&#xff0c;一看吓一跳&#xf…

右键文件夹 ------- 打开 vscode的方法

1、右键vscode点击属性 2、这是地址栏&#xff0c;一会复制即可 3、新建一个txt文件,将这个复制进去 Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\*\shell\VSCode] "Open with Code" "Icon""D:\\Microsoft VS Code\\Code.exe"[HKE…

docker基本命令学习 | Docker网络、Docker镜像发布

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; docker安装、卸载 docker安装使用 卸载旧版本docker或者环境 [rootiZf8zdcobr3fw7vn0p3538Z /]# yum remove docker \ > docker-client \ >…

混合云:降本增效,云计算的未来趋势,企业数字化转型的王道!

随着云计算技术的不断发展&#xff0c;云计算已经成为了企业信息化的主流趋势&#xff0c;而混合云则是云计算领域发展的一个新方向。混合云指的是将公有云和私有云相结合&#xff0c;构建一种新的云计算模式。本文将从混合云的定义、特点、优势以及应用场景等方面进行阐述&…

HarmonyOS学习路之方舟开发框架—学习ArkTS语言(状态管理 三)

Link装饰器&#xff1a;父子双向同步 子组件中被Link装饰的变量与其父组件中对应的数据源建立双向数据绑定。 概述 Link装饰的变量与其父组件中的数据源共享相同的值。 装饰器使用规则说明 Link变量装饰器 说明 装饰器参数 无 同步类型 双向同步。 父组件中State, Stor…

语音合成是什么?如何进行语音合成TTS数据采集?

我们在上一篇讲到语音数据采集分为常见的两种语音数据采集类型&#xff0c;一个是语音识别数据&#xff08;ASR&#xff09;&#xff0c;另一个是语音合成&#xff08;TTS&#xff09;。这一期中&#xff0c;我们将介绍语音合成技术是什么&#xff0c;如何采集语音合成数据和制…

亚马逊店铺的回款周期是多久?

现如今&#xff0c;开亚马逊店铺可是一个技术活&#xff0c;一旦有一个环节&#xff0c;或者是一件事情没有做好&#xff0c;对整个亚马逊店铺过程中影响都是十分巨大的&#xff0c;不少亚马逊卖家就吃过这方面的亏。 很多亚马逊卖家就是吃亏在这些方面&#xff0c;现在要想开…

OpenAI的提供的Model简要介绍

OpenAI提供的model 通过OpenAI的接口可以查看所有支持的模型(目前的账号无GPT4的权限&#xff0c;所以没有列举GPT4相关的模型)。 import os import openai import pandas as pd from IPython.display import displayopenai.api_key os.getenv("OPENAI_API_KEY")…

瀑布流布局columns

瀑布流布局其核心是基于一个网格的布局&#xff0c;而且每行包含的项目列表高度是随机的&#xff08;随着自己内容动态变化高度&#xff09;&#xff0c;同时每个项目列表呈堆栈形式排列&#xff0c;最为关键的是&#xff0c;堆栈之间彼此之间没有多余的间距差存大。还是上张图…

【UI自动化测试】Jenkins配置

前一段时间帮助团队搭建了UI自动化环境&#xff0c;这里将Jenkins环境的一些配置分享给大家。 背景&#xff1a; 团队下半年的目标之一是实现自动化测试&#xff0c;这里要吐槽一下&#xff0c;之前开发的测试平台了&#xff0c;最初的目的是用来做接口自动化测试和性能测试&…

Django系列之DRF简单使用

基于ModelViewSets的简单使用 models.py from django.db import modelsclass AuthorDetail(models.Model):gender models.CharField(max_length8)birthday models.DateField()telephone models.BigIntegerField()addr models.CharField(max_length64)class Author(models…

FPGA项目设计:数字时钟

项目要求&#xff1a; 设计一个数字时钟&#xff0c;数码管前两位显示小时&#xff0c;数码管中间两位显示分钟&#xff0c;数码管后面两位显示秒。 项目设计&#xff1a; 系统框架图&#xff1a; 计数模块时序图&#xff1a; 代码实现&#xff1a; 计数模块&#xff1a; /…

AndroidStudio查看AOSP的两种方法

作者&#xff1a;利维亚的杰洛特 本篇文章主要分享一些自己平时工作中使用AndroidStudio查看aosp的方法&#xff0c;同时抛砖引玉&#xff0c;希望知道其它便利有效的查看调试方式技巧的大佬们能够不吝赐教&#xff0c;大家互相分享&#xff0c;共同进步。 如果直接用AndroidS…

解决一个Sqoop抽数慢的问题,yarn的ATSv2嵌入式HBASE崩溃引起

新搭建的一个Hadoop环境&#xff0c;用Sqoop批量抽数的时候发现特别慢&#xff0c;我们正常情况下是一个表一分钟左右&#xff0c;批量抽十几个表&#xff0c;也就是10分钟的样子&#xff0c;结果发现用了2个小时&#xff1a; 查看yarn日志 发现有如下情况&#xff1a; 主要有两…

【iOS】GCD深入学习

关于GCD和队列的简单介绍请看&#xff1a;【iOS】GCD学习 本篇主要介绍GCD中的方法。 栅栏方法:dispatch_barrier_async 我们有时候需要异步执行两组操作&#xff0c;而且第一组操作执行完之后&#xff0c;才能开始执行第二组操作&#xff0c;当然操作组里也可以包含一个或者…

HTTP——一、了解Web及网络基础

HTTP 一、使用HTTP协议访问Web二、HTTP的诞生1、为知识共享而规划Web2、Web成长时代3、驻足不前的HTTP 三、网络基础TCP/IP1、TCP/IP协议族2、TCP/IP的分层管理3、TCP/IP 通信传输流 四、与HTTP关系密切的协议&#xff1a;IP、TCP和DNS1、负责传输的 IP 协议2、确保可靠性的TCP…

Gartner:2022年全球IaaS公有云服务市场增长30%,首次突破1000亿美元

根据Gartner的统计结果&#xff0c;2022年全球基础设施即服务&#xff08;IaaS&#xff09;市场从2021年的928亿美元增长到1203亿美元&#xff0c;同比增长29.7%。亚马逊在2022年继续排在IaaS市场的第一名&#xff0c;其次是微软、阿里巴巴、谷歌和华为。 最新消息&#xff0c;…