我用的list,然后最后说超时了。
class Solution {
public int[] divingBoard(int shorter, int longer, int k) {
if (k == 0) return new int[0];
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = 0; i <= k; i++) {
if (!list.contains((i * longer) + ((k - i) * shorter)))
list.add((i * longer) + ((k - i) * shorter));
}
int[] res = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
res[i] = list.get(i);
}
return res;
}
}
我觉得是list.contains()这个函数,list底层是双向链表,应该是每次判断导致超时了。
就其实很简单,因为存在相等的情况只有长木板和短木板相同的时候,所以可以不用去重。
最近休息傻了。
class Solution {
public int[] divingBoard(int shorter, int longer, int k) {
if (k == 0) return new int[0];
if (shorter == longer) {
return new int[]{shorter * k};
}
int[] res = new int[k+1];
for (int i = 0; i <= k; i++) {
res[i]=(i * longer) + ((k - i) * shorter);
}
return res;
}
}