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;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章