leetcode 面试题 16.11. 跳水板

【题目】面试题 16.11. 跳水板

你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。
返回的长度需要从小到大排列。

示例:

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

提示:
0 < shorter <= longer
0 <= k <= 100000

【解题思路1】

三种情况

  • k = 0,0种
  • k > 0
    若shorter ≠ longer,从k个短的+0个长的,到0个短的+k个长的依次组成k + 1种
    若shorter = longer,一种 k * shorter 长度
class Solution {
    public int[] divingBoard(int shorter, int longer, int k) {
        if(k == 0){
            return new int[]{};
        }
        if(shorter == longer){
            return new int[]{k * shorter};
        }
        int[] ans = new int[k+1];
        int sh = k, lo = 0;
        int i = 0;
        while(sh >= 0){
            ans[i] = shorter * sh + longer * lo;
            sh--;
            lo++;
            i++;
        }
        return ans;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章