面试题 16.11. 跳水板
你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter
,长度较长的木板长度为longer
。你必须正好使用k
块木板。编写一个方法,生成跳水板所有可能的长度。
返回的长度需要从小到大排列。
示例:
1 | 输入: |
提示:
- 0 < shorter <= longer
- 0 <= k <= 100000
提示中给出了相关信息,我们考虑特殊情况:
- k == 0,直接返回一个空数组;
- shorter == longer,直接返回 shorter * k,只存在这一个长度。
剩下的一般情况 shorter < longer 且 k != 0,我们直接可以使用一次循环即可,数组第一个元素为 shorter * k,第二个元素为 shorter * (k - 1) + longer,第三个元素为 shorter * (k - 2) + longer * 2 … 最后一个元素为 longer * k,一共 k + 1 个元素。
1 | class Solution { |
时间复杂度O(n),空间复杂度O(1)。