由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 给出5个数字和加减乘除4个符号求最大值
相关主题
问一道uber onsite题目问一道最近的onsite题
L一个电面题一道面试题(integer to binary string)
Interleave Strings那个题目有O(n)时间 O(1)空间算法么?收到G家拒信,发面经
做一下common prefix in sorted string arrays问道google面试题
关于 unique paths,总是过不了 OJ, 请牛牛们帮忙看看~~~先谢过。。。问个java hashcode的题
搞了小半个月,leetcode还有20题Exposed上一道string permutation的题
Leetcode-010: Regular Expression Match (DP Solution)问个考古的题
求问一道面试题问一个facebook的电面
相关话题的讨论汇总
话题: int话题: string话题: rp话题: charat话题: opc
进入JobHunting版参与讨论
1 (共1页)
c*******r
发帖数: 51
1
用啥算法?
y**********a
发帖数: 824
2
遍历所有的可能性,计算。
public int maxResult(int[]A) {
int[]rel=new int[1];rel[0]=Integer.MIN_VALUE;
dfs(A, new int[A.length-1], 0, rel);
return rel[0];
}
void dfs(int[]A, int[]op, int i, int[] max) {
if (i==op.length) {
StringBuilder s=new StringBuilder();
s.append(Integer.toString(A[0]));
char[] opc=new char[4];
opc[0]='+';opc[1]='-';opc[2]='*';opc[3]='/';
for (int j=0;j s.append(opc[op[j]]);
s.append(A[j+1]);
}
max[0]=Math.max(max[0], eval(s.toString()));
return;
}
for (int j=0;j<4;++j){
op[i]=j;
dfs(A, op, i+1, max);
}
}
int eval(String s) {
List rel=new ArrayList<>();
//0 : operator 1: numbers
for (int i=0, n=s.length();i if (rel.size()==0||rel.get(rel.size()-1).charAt(0)=='0') {
int j=i+1;
while (j rel.add("1,"+s.substring(i,j));
i=j;
} else {
rel.add("0,"+s.substring(i,i+1));
++i;
}
}
return evaluateInorder(rel);
}
int evaluateInorder(List s) {
String[] rp=new String[s.size()];
Queuestc=Collections.asLifoQueue(new ArrayDeque());
int j=0;
for (int i=0;i if (s.get(i).charAt(0)=='0') {
char c=s.get(i).charAt(2);
if (c=='/'||c=='*') {
rp[j++]=s.get(i+1).split(",")[1];
rp[j++]=s.get(i).split(",")[1];
i+=2;
} else stc.offer(s.get(i++).split(",")[1]);
} else rp[j++]=s.get(i++).split(",")[1];
}
while (!stc.isEmpty())rp[j++]=stc.poll();
for (int i=0;i if (rp[i].length()==1&&!Character.isDigit(rp[i].charAt(0))) {
int b=Integer.parseInt(stc.poll());
int a=Integer.parseInt(stc.poll());
char c=rp[i].charAt(0);
if (c=='*') stc.offer(Integer.toString(a*b));
if (c=='/') stc.offer(Integer.toString(a/b));
if (c=='+') stc.offer(Integer.toString(a+b));
if (c=='-') stc.offer(Integer.toString(a-b));
} else stc.offer(rp[i]);
}
return Integer.parseInt(stc.poll());
}
public static void main(String[] args) {
int[] A={1,1,2,2,1};
System.out.println(new MaxNumberWithOperators().maxResult(A));
}
m*********a
发帖数: 3299
3
用递归
第一个是必须是数字,有5种选择,
第二个是+/-/*//之一,选一个
然后是数字,剩下4个数字,选一个
然后是3个符号
...
...
递归完成,最后一个数字,比较这个方法的值是不是最大

【在 c*******r 的大作中提到】
: 用啥算法?
1 (共1页)
进入JobHunting版参与讨论
相关主题
问一个facebook的电面关于 unique paths,总是过不了 OJ, 请牛牛们帮忙看看~~~先谢过。。。
一道G家店面题搞了小半个月,leetcode还有20题
做题做得很郁闷,求指点Leetcode-010: Regular Expression Match (DP Solution)
问一道A家的面试题求问一道面试题
问一道uber onsite题目问一道最近的onsite题
L一个电面题一道面试题(integer to binary string)
Interleave Strings那个题目有O(n)时间 O(1)空间算法么?收到G家拒信,发面经
做一下common prefix in sorted string arrays问道google面试题
相关话题的讨论汇总
话题: int话题: string话题: rp话题: charat话题: opc