题目描述 class Solution { public int[] divingBoard(int shorter, int longer, int k) { } } 题目分析 这道题很简单,在数学的角度上,就是计算排列组合,计算所有长短跳水板可以组成的组合一共有k个板,假设有i个短板,那就有k-i个长板,然后计算长度放入结果数组即可但是有两种特殊情况:当板的数量为零时和当长板和短板的长度一样时,前者只需返回一个空数组即可,后者简单来说就是有k个板,计算长度,那就把计算得出的结果放入长度为1的数组返回即可 解法分析 先判断板的数量判断长板和短板是否长度相同循环计算每种组合的结果并放入数组中,可以用while也可以用for,推荐用for,while需要写变量加减的语句,代码看起来不是那么整洁 上代码 class Solution { public int[] divingBoard(int shorter, int longer, int k) { if (k==0) { return new int[]{}; } if(shorter == longer){ return new int[]{k * shorter}; } int[] res = new int[k+1]; for(int i = 0; i <= k; i++){ res[k-i] = i*shorter + (k-i)*longer; } return res; } }