【LeetCode】每日一题——保持城市天际线
目录
题目
一起来读题目
主要思路:
代码实现
写法一:
代码解读
结果:
写法二:列表推导式写法
参考文章:
题目
哈哈是不是看懵了啊,俗话说的好:不会写的题目,好好读多几次题目
读不懂,没关系,我和大家一起读题目
一起来读题目
1)方向问题
所要求的四个方向,实际上两个就够了
因为由于是看平面,
从前看与从后看,
从左看与从右看是完全一样的
2)什么是大楼的高度?
其实就是数组中的值,1代表1层高,2代表2层高
3)如何变化建筑的高度,才能保持天际线不变呢?
就是变化后的高度不超过该点所在的边或列上的最高点
(简单来说就是数值不超过所在行和所在列上的最高值的最小值)
主要思路:
1)先找到所有的行和列的最高的数值(就是所有的行和列的最高的层数)
2)每个元素(每栋楼)的行和列的最高的数值
取最小的(因为最小的限制着)
我们记行和列的最高的数值的 最小值为M
将M减去该位置元素(该栋楼的高度)的差值
加上该位置元素
得到结果 最高可到多少层
代码实现
写法一:
class Solution:def maxIncreaseKeepingSkyline(self, grid: List[List[int]]) -> int:row = [max(i) for i in grid] #行的最大column = [max([item[i] for item in grid]) for i in range(len(grid[0]))] #列的最大ans = 0for i in range(len(grid)):for j in range(len(grid[i])):ans += (min(row[i],column[j]) - grid[i][j])return ans
代码解读
1)找到所有的行和列的最高的数值
row = [max(i) for i in grid] #行的最大
column = [max([item[i] for item in grid]) for i in range(len(grid[0]))] #列的最大
结果:
2)for i in range(len(grid)):
for j in range(len(grid[i])):遍历数值
for i in range(len(grid)): #遍历行
for j in range(len(grid[i])): #遍历列
写法二:列表推导式写法
代码解析一样的,除了zip内置函数
class Solution:def maxIncreaseKeepingSkyline(self, grid: List[List[int]]) -> int:rowsMax, colsMax = [max(g) for g in grid], [max(z) for z in zip(*grid)]return sum(min(rowsMax[i], colsMax[j]) - grid[i][j] for i in range(len(grid)) for j in range(len(grid[0])))
参考文章:
【力扣时间】【807】【中等】保持城市天际线_山峰-CSDN博客
python中zip()函数的用法_张康的博客-CSDN博客_python zip
【LeetCode】每日一题——保持城市天际线相关推荐
- leetcode每日刷题计划-简单篇day8
leetcode每日刷题计划-简单篇day8 今天是纠结要不要新买手机的一天QAQ想了想还是算了吧,等自己赚钱买,加油 Num 70 爬楼梯 Climbing Stairs class Solutio ...
- Leetcode每日一题:171.excel-sheet-column-number(Excel表列序号)
思路:就是168题的反命题,进制的方式完美解决: Leetcode每日一题:168.excel-sheet-column-title(Excel表名称) class Solution {public: ...
- 【LeetCode每日一题】1723. 完成所有工作的最短时间
[LeetCode每日一题]1723. 完成所有工作的最短时间 [1] 1723. 完成所有工作的最短时间 [2] 473. 火柴拼正方形 [1] 1723. 完成所有工作的最短时间 题目: 给你一个 ...
- leetcode每日一题--雀巢原理;抽屉算法;Quorum机制;分布式应用
leetcode每日一题 539. 最小时间差 示例 1: 输入:timePoints = ["23:59","00:00"] 输出:1 示例 2: 输入:ti ...
- LeetCode每日一题——1812. 判断国际象棋棋盘中一个格子的颜色
LeetCode每日一题系列 题目:1812. 判断国际象棋棋盘中一个格子的颜色 难度:简单 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 给你一个坐标 coordinates ...
- 【LeetCode每日一题】——109.有序链表转换二叉搜索树
文章目录 一[题目类别] 二[题目难度] 三[题目编号] 四[题目描述] 五[题目示例] 六[题目提示] 七[解题思路] 八[时间频度] 九[代码实现] 十[提交结果] 一[题目类别] 二叉树 二[题 ...
- leetcode每日一题·救生艇问题(Python)
leetcode每日一题·救生艇问题(Python) 问题描述 题目入口 题目思路 首先分析问题,一个船最多坐两人,因此我们可以把这个问题看作两两组合的问题,并且如果最重的那个人和最轻的人加起来大于l ...
- LeetCode每日一题——904. 水果成篮
LeetCode每日一题系列 题目:904. 水果成篮 难度:普通 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 你正在探访一家农场,农场从左到右种植了一排果树.这些树用一个整 ...
- LeetCode每日一题打卡组队监督!刷题群!
近 2000 人已经加入共同刷题啦! 群友每天都会在群里给大家讲解算法题 每周日「负雪明烛」组织直播讲题 我相信来看我博客的大部分人都是通过LeetCode刷题过来的.最近发现LeetCode中文网站 ...
最新文章
- 量子计算机混战:新贵离子 vs 老派超导体
- 15-jQuery补充
- 机器学习(五)——缓解过拟合
- Java设计模式-观察者模式(订阅发布模式)
- yolov3损失函数改进_YOLOv3论文解析
- 快速设置 App 图标 - iOS/Android
- switch 关键字的学习
- BarTender怎么打印公式化的三列标签
- identity 1 1 mysql_identity在mysql中怎么用啊以下代码的错误在哪里
- 反射进行.newInstance()方法,报错Caused by: java.lang.NoSuchMethodException:XXXX.<init>()
- 编码器分类及原理和测速应用(含代码)
- 最浅显的IE反劫持攻略(转)
- 魅族手机Root之后如何恢复
- 软件测试工程师APUS一面二面汇总
- php script是什么,script是什么意思
- tinode客户端安卓版编译手账
- 计算机考研基本信息,复旦大学计算机考研基本信息
- 推荐几个亲测好用高质量学习SQL的网站(建议收藏)
- php+仿微信发红包+负数,php仿微信红包分配算法的实现方法
- 按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。