Q1: 24点牌戏,1-10的4个数字用 + - * / 得到24,一开始以为可以用括号 (a+b)*(c+d),有点复杂,
后面试了两种情况才知道不需要,花了好久才过,忘了存代码了。。。
Q2:检测括号组成的字符串是否有效,一开始用三个int模拟stack,发现有问题,重新审题才看见 ”{ [ } ] “ 是不行,改了一下用Stack重新写了一下过的
import java.util.*; public class Solution { /** * * @param s string字符串 * @return bool布尔型 */ public boolean IsValidExp (String s) { // write code here Stack<Character> stack = new Stack(); for(int i=0;i<s.length();i++){ if(s.charAt(i)=='{'){ stack.push('{'); }else if(s.charAt(i)=='('){ stack.push('('); }else if(s.charAt(i)=='['){ stack.push('['); }else if(s.charAt(i)=='}'){ if(stack.isEmpty() || stack.pop()!='{') return false; }else if(s.charAt(i)==')'){ if(stack.isEmpty() || stack.pop()!='(') return false; }else{ if(stack.isEmpty() || stack.pop()!='[') return false; } } return stack.isEmpty(); } }
Q3:背包问题,用贪心也能做
import java.util.*; public class Solution { /** * * @param N int整型 * @return int整型 */ public int GetCoinCount (int N) { // write code here int dp[] = new int[1024]; for(int i=0;i<1024;i++) dp[i] = 9999999; dp[0] = 0; for(int i=1;i<1024;i++){ if(i-1>=0) dp[i] = Math.min(dp[i-1]+1,dp[i]); if(i-4>=0) dp[i] = Math.min(dp[i-4]+1,dp[i]); if(i-16>=0) dp[i] = Math.min(dp[i-16]+1,dp[i]); if(i-64>=0) dp[i] = Math.min(dp[i-64]+1,dp[i]); } return dp[1024-N]; } }
PS:第一次参加正常的笔试(之前笔了个兴业数金,选择题全不会,基础和算法基本全不考,编程题简直比easy还easy,就觉得很迷),
渣渣也没打算投大厂的,本来提前交卷了还蛮高兴的,兴冲冲来发个贴,一看笔试投票尼玛 50% 都 AC 3道的
加上我选择题有好几道都不会,看来基本也是凉凉了。。。
话说兴业的选择题问答题可能答对了一半最多了
全部评论
(0) 回帖