Leetcode 每日一题 跳水板(golang)

题目
在这里插入图片描述
分析思路

运用数学方法,考虑以下情况
1.k=0,则不能建造任何跳水板,返回空;
2.shorter=longer 短跳水板长度=长跳水板长度,那么建造跳水板的长度是唯一的,都是shorter,返回一个长度为1,组中元素为shorter * k的数组;
3.一般情况 shorter 不等于longer 且k>0,此时默认全部用短木板是一种,然后每多替换一个短木板为长木板就是一种新组合,因此又有k种组合,所以一共有k+1种长度

接下来判断两种组合,
1>有 i块长木板,则跳水板的长度是 shorter*(k-i)+longer* i;
2>有 k-i块长木板,则跳水板的长度是 shorter * i+longer * (k-i);
则两种不同的组合下的跳水板长度之差为
-shorterk-longer(k-2i) <0
由此可见,任意两种不同的组合下的跳水板长度都是不一样的,而且使用的长木板越多,跳水板的长度越大

于是给出以下代码(golang)

func divingBoard(shorter int, longer int, k int) []int {
	length :=make([]int,k+1) 
	if k==0{
	return nil    //判断k是否为0
	}
	if shorter == longer{
		return []int{shorter*k}  //判断短跳水板和长跳水板长度是否相同
	}
		for i:=0;i<=k;i++{
			length[i]=shorter*(k-i)+longer*i   //从小到大输出所有可能
	return length
	}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值