Loading

【力扣】跳水板

你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为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

 

public int[] divingBoard(int shorter, int longer, int k) {
        if (k == 0){
            return new int[]{};
        }

        if (shorter == longer) {
            return new int[]{shorter * k};
        }

        //注意,不需要判重,因为根本不可能有重复的结果!!!!
        //这里要想明白为啥是k+1 的长度

        //举例:
        // shorter * k , shorter * (k -1) + longer * 1 ... ...  shorter * 1 + longer * (k-1) + longer * k
        // 单看shorter一共有 k次 出现在这个式子里,最后一次没有
        // 又因为前提已经确认 shorter <  longer 所以一共是k+1 次

        int [] resultInfo = new int[k+1];
        for (int i = 0 ; i < k+1; i++){
            resultInfo[i] = (shorter * (k-i)  + longer * i);
        }
        return resultInfo;

    }

 

posted @ 2020-07-08 09:41  冯廷鑫  阅读(169)  评论(0编辑  收藏  举报