553. 最优除法【中等题】【每日一题】
思路:【数学法】
代码:
class Solution {
public String optimalDivision(int[] nums) {
int len = nums.length;
if (len == 1){
return nums[0]+"";
}
if (len == 2){
return nums[0]+"/"+nums[1];
}
StringBuilder ans = new StringBuilder(nums[0] + "/(");
for (int i = 1; i < len; i++) {
ans.append(nums[i]).append("/");
}
ans.deleteCharAt(ans.length()-1);
return ans+")";
}
}
150. 逆波兰表达式求值【中等题】
思路:
代码:
class Solution {
public int evalRPN(String[] tokens) {
int len = tokens.length;
if (len == 1){
return Integer.parseInt(tokens[0]);
}
if (len == 2){
return -1;
}
LinkedList<Integer> list = new LinkedList<>();
list.addFirst(Integer.parseInt(tokens[0]));
list.addLast(Integer.parseInt(tokens[1]));
for (int i = 2; i < len; i++) {
String cur = tokens[i];
if ("+".equals(cur) || "-".equals(cur) || "*".equals(cur) || "/".equals(cur)){
int n2 = list.getLast();
list.removeLast();
int n1 = list.getLast();
list.removeLast();
int n = 0;
switch (cur){
case "+":n = n1+n2;break;
case "-":n = n1-n2;break;
case "*":n = n1*n2;break;
case "/":n = n1/n2;break;
}
list.addLast(n);
}else {
list.add(Integer.parseInt(cur));
}
}
return list.getFirst();
}
}