题目来源:
leetcode题目,网址:面试题 16.11. 跳水板 - 力扣(LeetCode)
解题思路:
使用哈希表记录所有可能结果,然后再将哈希表中的数据放入数组中,最后对数组进行排序即可。
解题代码:
class Solution {
public int[] divingBoard(int shorter, int longer, int k) {
if(k==0){
return new int[]{};
}
Set<Integer> set=new HashSet<>();
for(int i=0;i<=k;i++){
set.add(shorter*i+longer*(k-i));
}
int[] res=new int[set.size()];
int i=0;
for(int num:set){
res[i]=num;
i++;
}
Arrays.sort(res);
return res;
}
}
总结:
官方题解基于数学解题,将 shorter 和 longer 相等这一情况单独列出,这样在后续计算过程中就不会有两次计算结果相同的情况,直接使用数组即可。
bunch 堆
plank 木板