面试题 16.11. 跳水板
class Solution {
public int[] divingBoard(int shorter, int longer, int k) {
if(k<1){
return new int[]{};
}
if(shorter==longer){
return new int[]{shorter*k};
}
int[] res = new int[k+1];
for(int i = 0;i<=k;i++){
res[i] = shorter * (k-i) + longer * i;
}
return res;
}
}
341. 扁平化嵌套列表迭代器
public class NestedIterator implements Iterator<Integer> {
private List<Integer> list = new ArrayList<>();
private int index;
private void add(List<NestedInteger> nestedList) {
for(NestedInteger nestedInteger : nestedList){
if(nestedInteger.isInteger()){
list.add(nestedInteger.getInteger());
}else{
add(nestedInteger.getList());
}
}
}
public NestedIterator(List<NestedInteger> nestedList) {
add(nestedList);
}
@Override
public Integer next() {
return list.get(index++);
}
@Override
public boolean hasNext() {
return index<list.size();
}
}
150. 逆波兰表达式求值
class Solution {
//纯数组模拟栈实现(推荐)
public static int evalRPN(String[] tokens) {
int[] numStack = new int[tokens.length / 2 + 1];
int index = 0;
for (String s : tokens) {
switch (s) {
case "+":
numStack[index - 2] += numStack[--index];
break;
case "-":
numStack[index - 2] -= numStack[--index];
break;
case "*":
numStack[index - 2] *= numStack[--index];
break;
case "/":
numStack[index - 2] /= numStack[--index];
break;
default:
// numStack[index++] = Integer.valueOf(s);
//valueOf改为parseInt,减少自动拆箱装箱操作
numStack[index++] = Integer.parseInt(s);
break;
}
}
return numStack[0];
}
}
class Solution {
// 栈实现 8 ms 36.7 MB
public static int evalRPN(String[] tokens) {
Stack<Integer> numStack = new Stack<>();
Integer op1, op2;
for (String s : tokens) {
switch (s) {
case "+":
op2 = numStack.pop();
op1 = numStack.pop();
numStack.push(op1 + op2);
break;
case "-":
op2 = numStack.pop();
op1 = numStack.pop();
numStack.push(op1 - op2);
break;
case "*":
op2 = numStack.pop();
op1 = numStack.pop();
numStack.push(op1 * op2);
break;
case "/":
op2 = numStack.pop();
op1 = numStack.pop();
numStack.push(op1 / op2);
break;
default:
numStack.push(Integer.valueOf(s));
break;
}
}
return numStack.pop();
}
}
你知道的越多,你不知道的越多。