栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

golang力扣leetcode 699.掉落的方块

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

golang力扣leetcode 699.掉落的方块

699.掉落的方块
  • 699.掉落的方块
  • 题解
  • 代码

699.掉落的方块

699.掉落的方块

题解

题目:相当于俄罗斯方块下落,如果当前方块下面有方块,就会叠上去,给一个方块数组,求每个方块的高度,不过这句话要做修改,是记录目前所有已经落稳的== 方块堆叠的最高高度 ==,即如果当前方块的高度小于之前堆叠的最高高度,当前高度赋值为堆叠的最高高度

思路:很明显的区间查询和区间修改,用线段树来做,可惜我不会,直接用暴力方法

1.遍历方块数组
2.遍历当前方块之前的方块数组
3.如果当前方块与之前的方块重合
	则height[i] = max(height[i], height[j]+curHeight)
代码
func fallingSquares(positions [][]int) []int {
	height := make([]int, len(positions))
	for i, v := range positions { //当前这个方块
		l1, r1, curHeight := v[0], v[0]+v[1]-1, v[1]
		height[i] = curHeight
		for j, vv := range positions[:i] { //该点之前落下的方块
			l2, r2 := vv[0], vv[0]+vv[1]-1
			if !(r1 < l2 || l1 > r2) { //如果两个方块有重叠
				height[i] = max(height[i], height[j]+curHeight)
			}
		}
	}
	for i := 1; i < len(height); i++ {
		height[i] = max(height[i], height[i-1])
	}
	return height
}
func max(i, j int) int {
	if i > j {
		return i
	}
	return j
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/932085.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号