面试题 16.11. 跳水板(简单)

面试题 16.11. 跳水板
你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。

返回的长度需要从小到大排列。

示例:

输入:
shorter = 1
longer = 2
k = 3
输出: {3,4,5,6}

提示:

0 < shorter <= longer
0 <= k <= 100000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/diving-board-lcci

思想:题目要求输出所有可能长度,显然,数组长度有k+1大小,两边的K个多出来一个,所以k+1个,题目要求排序,直接将shorter多的先进行计算就可以完成排序要求。然后再处理一些特殊情况就可以了。
Java:

class Solution {
      
    public int[] divingBoard(int shorter, int longer, int k) {
        if(k==0){			//K=0的情况下
            return new  int[0];
        }
        if (shorter == longer) {			//shorter等于longer的情况下
            return new int[] { k * shorter };
        } else {									//排除上述两种情况下
            int[] arra = new int[k + 1];
            arra[0]=shorter*k;		//第一个
            for(int i=1;i<k;i++){
                arra[i]=longer*i+shorter*(k-i);
            }
            arra[k]=longer*k;			//最后一个


            return arra;
        }

    }
}

Python:

class Solution:
    def divingBoard(self, shorter: int, longer: int, k: int) -> List[int]:
        arra=[]
        if k==0:
            return arra
        elif shorter==longer:
            arra.append(shorter*k)
            return arra
        else:
            arra.append(shorter*k)
            i=1
            while i<k:
                arra.append(longer*i+shorter*(k-i))
                i+=1
            arra.append(longer*k)
            return arra

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值