首页 > B站 8.13后端开发笔试
头像
misaka_mikoto
编辑于 2020-08-13 20:56
+ 关注

B站 8.13后端开发笔试

第一题 24点


暴力
public class BiliBili_1 {
    public boolean Game24Points (int[] arr) {
        boolean [] used = new boolean [4];
        return helper(arr, used, 0.0);
    }

    private boolean helper(int[] arr, boolean[] used, double res){
        for (int i = 0; i < arr.length; i++) {
            if(used[i] == false){
                used[i] = true;

                if(helper(arr, used, res + arr[i]) || helper(arr, used, res - arr[i]) || helper(arr, used, res * arr[i]) || helper(arr, used, res / arr[i])){
                    return true;
                }
                used[i] = false;
            }
        }
        if(res == 24){
            return true;
        }else{
            return false;
        }
    }

    public static void main(String[] args) {
        int [] arr = new int [] {7, 2, 1, 10};

        boolean b = new BiliBili_1().Game24Points(arr);

        System.out.println(b);
    }
}


第二题 LeetCode 20原题


public class Bilibili_2 {
    public boolean IsValidExp (String s) {
        Map<Character, Character> hm = new HashMap<>();

        hm.put(')','(');
        hm.put('}','{');
        hm.put(']','[');

        Stack<Character> stack = new Stack<>();

        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);

            if(hm.containsKey(c)){
                char top = stack.isEmpty() ? '*' : stack.pop();

                if(top != hm.get(c)){
                }
            }else{
                stack.push(c);
            }          return false;
           
        }
        return stack.isEmpty();
    }
}

第三题 背包

public class Bilibili_3 {
    public int GetCoinCount (int N) {
        int remainder = 1024 - N;

        int [] dp = new int [remainder + 1];

        int [] coins = new int []{1, 4, 16, 64};

        for (int i = 0; i <= remainder; i++) {
            dp[i] = i;
        }

        for (int i = 0; i < 4; i++) {
            for(int j = coins[i]; j <= remainder; j++){
                dp[j] = Math.min(dp[j], dp[j - coins[i]] + 1);
            }
        }

        return dp[remainder];
    }

    public static void main(String[] args) {
        int i = new Bilibili_3().GetCoinCount(200);

        System.out.println(i);
    }
}


难度比较低




全部评论

(3) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

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

近期精华帖

热门推荐