部署DeepSeek模型,进群交流最in玩法!
立即加群
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Golang Leetcode 956. Tallest Billboard.go

Golang Leetcode 956. Tallest Billboard.go

作者头像
anakinsun
发布于 2019-05-06 09:51:25
发布于 2019-05-06 09:51:25
41300
代码可运行
举报
文章被收录于专栏:学习日记学习日记
运行总次数:0
代码可运行

dp思路 dp方程的键为两个柱子之间的高度差,值为当前高度差情况下,两个柱子的最小高度 状态转移的时候有三种情况,其中后两种可以合并 最后dp[0]保存的就是两个柱子高度差为0的时候,两个柱子的最小高度

code

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
func tallestBillboard(rods []int) int {
	sum := 0
	for _, v := range rods {
		sum += v
	}
	dp := make([]int, sum+1)
	for k, _ := range dp {
		dp[k] = -1
	}
	dp[0] = 0
	for _, v := range rods {
		cur := make([]int, sum+1)
		copy(cur, dp)
		//for i := 0; i <= sum; i++ {
		for d, val := range cur {
			if val != -1 {
				if d+v <= sum {
					dp[d+v] = mymax(dp[d+v], val)
				}
				dp[myabs(d-v)] = mymax(dp[myabs(d-v)], val+mymin(v, d))
			}
		}
		//fmt.Println(dp)
	}
	return dp[0]
}
func mymin(x, y int) int {
	if x > y {
		return y
	}
	return x
}

func myabs(x int) int {
	if x >= 0 {
		return x
	}
	return -x
}

func mymax(x, y int) int {
	if x > y {
		return x
	}
	return y
}

更多内容请移步我的repo:https://github.com/anakin/golang-leetcode

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年04月20日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Golang Leetcode 908. Smallest Range I.go
更多内容请移步我的repo:https://github.com/anakin/golang-leetcode
anakinsun
2019/05/07
3300
Golang Leetcode 581. Shortest Unsorted Continuous Subarray.go
a. 当我们找到第一个违反ascending 排序的数字 2的时候,我们不能是仅仅把beg 标记为2的前面一个数字7,而是要一直往前,找到一个合适的位置,找到在最前面位置的比2大的数字,这里是3。
anakinsun
2019/04/22
4780
Leetcode Golang 110. Balanced Binary Tree.go
版权声明:原创勿转 https://blog.csdn.net/anakinsun/article/details/88965643
anakinsun
2019/04/12
4580
Golang Leetcode 746. Min Cost Climbing Stairs.go
dp解法 状态方程:dp[i] =min(dp[i-2]+cost[i-2],dp[i-1]+cost[i-1])
anakinsun
2019/04/25
4240
Golang Leetcode 823. Binary Trees With Factors.go
版权声明:原创勿转 https://blog.csdn.net/anakinsun/article/details/89378553
anakinsun
2019/05/05
3490
Golang Leetcode 687. Longest Univalue Path.go
更多内容请移步我的repo:https://github.com/anakin/golang-leetcode
anakinsun
2019/04/28
3280
Golang Leetcode 594. Longest Harmonious Subsequence.go
更多内容请移步我的repo:https://github.com/anakin/golang-leetcode
anakinsun
2019/04/22
2990
Golang Leetcode 1005. Maximize Sum Of Array After K Negations.go
更多内容请移步我的repo:https://github.com/anakin/golang-leetcode
anakinsun
2019/05/06
4490
Golang Leetcode 653. Two Sum IV - Input is a BST.go
更多内容请移步我的repo:https://github.com/anakin/golang-leetcode
anakinsun
2019/04/22
4300
Golang Leetcode 560. Subarray Sum Equals K.go
更多内容请移步我的repo:https://github.com/anakin/golang-leetcode
anakinsun
2019/04/22
4040
Golang leetcode 494. Target Sum.go
版权声明:原创勿转 https://blog.csdn.net/anakinsun/article/details/89175590
anakinsun
2019/04/12
4290
Golang Leetcode 985. Sum of Even Numbers After Queries.go
先计算数组中所有偶数的和 遍历操作 如果之前是偶数,从和中减去 执行加操作 如果之后是偶数,再加到和里
anakinsun
2019/05/06
3190
Golang Leetcode 697. Degree of an Array.go
更多内容请移步我的repo:https://github.com/anakin/golang-leetcode
anakinsun
2019/04/28
4210
Golang Leetcode 1022. Sum of Root To Leaf Binary Numbers.go
更多内容请移步我的repo:https://github.com/anakin/golang-leetcode
anakinsun
2019/05/06
3980
Golang Leetcode 575. Distribute Candies.go
当糖果的种类数目大于妹妹应分得的糖果数目时,妹妹所能分得的最大糖果种类数为妹妹应分得的糖果数,反之,则为糖果的种类数。
anakinsun
2019/04/22
3210
Golang Leetcode 977. Squares of a Sorted Array.go
更多内容请移步我的repo:https://github.com/anakin/golang-leetcode
anakinsun
2019/05/06
5500
Golang Leetcode 942. DI String Match.go
更多内容请移步我的repo:https://github.com/anakin/golang-leetcode
anakinsun
2019/05/07
3560
Golang Leetcode 655. Print Binary Tree.go
更多内容请移步我的repo:https://github.com/anakin/golang-leetcode
anakinsun
2019/04/22
8420
Leetcode Golang 115. Distinct Subsequences.go
dp dp[i][j]表示构成i长度的t,用到j长度的s,结果等于种类 转移方程: 如果t[i]==s[j],dp[i][j]=dp[i-1][j-1]+dp[i][j-1] 否则:dp[i][j]=dp[i][j-1] 初始值: dp[0][*]=1表示构成0长度的t,有一种方法
anakinsun
2019/04/12
5060
2021-02-25:给定一个正数数组arr,请把arr中所有的数分成两个集合。
2021-02-25:给定一个正数数组arr,请把arr中所有的数分成两个集合。如果arr长度为偶数,两个集合包含数的个数要一样多;如果arr长度为奇数,两个集合包含数的个数必须只差一个。请尽量让两个集合的累加和接近,返回最接近的情况下,较小集合的累加和。
福大大架构师每日一题
2021/02/25
3010
2021-02-25:给定一个正数数组arr,请把arr中所有的数分成两个集合。
相关推荐
Golang Leetcode 908. Smallest Range I.go
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验