首页 > B站 2020.08.13 笔试编程题
头像
牛客358090666号
编辑于 2020-08-13 21:43
+ 关注

B站 2020.08.13 笔试编程题

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) 回帖
加载中...
话题 回帖

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐