前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Golang Leetcode 956. Tallest Billboard.go

Golang Leetcode 956. Tallest Billboard.go

作者头像
anakinsun
发布2019-05-06 17:51:25
3800
发布2019-05-06 17:51:25
举报
文章被收录于专栏:学习日记学习日记

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

code

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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • code
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档