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