面试题 16.11. 跳水板
难度:简单
题目描述
解题思路
做这道题,看看题干,突然感觉,这不就是道高中数学题嘛!
所有可能的长度,而且就只有两种长度,不就是首先k个最短的,这就是跳水板最短的长度;再长一点,k-1个短的,1个长的;依次类推,最长的情况是k个长的。
所以对于k块木板,可能的长度是k+1种
要注意的是边界情况,当k=0的时候,不能生成跳水板;
当shorter= longer的时候,只有一种可能的长度;
public int[] divingBoard(int shorter, int longer, int k) {
if(k == 0)
return new int[] {};
if(shorter == longer)
return new int[] {k*shorter};
int count = 0;
int[] re = new int[k+1];
for (int i = 0; i <= k; i++) {
int sum = i*longer + (k-i)*shorter;
re[count++] = sum;
}
return re;
}