1. 题目
你正在使用一堆木板建造跳水板。
有两种类型的木板,其中长度较短的木板长度为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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
- 这题非常简单,要读清楚题目,不需要知道中间可能的长度,一开始还动态规划。。。
- 需要使用 k 块板子,短的 k-i 块,长的 i 块不就行了吗,i 从 0 到 k,k+1 种可能
class Solution {
public:
vector<int> divingBoard(int shorter, int longer, int k) {
if(k == 0)
return {};
if(shorter == longer)//相等只有一种可能
return vector<int> ({k*shorter});
vector<int> ans(k+1);
int i, j = 0;
for(i = 0; i <= k; ++i)
{
ans[j++] = shorter*(k-i)+longer*i;
}
return ans;
}
};