首页 > b站的笔试题好简单
头像
是瑶瑶公主呀
编辑于 2020-08-13 19:35
+ 关注

b站的笔试题好简单

感觉从实习到现在,是遇见的最简单的一次了,都是 lc 原题
唉 不过没啥用 不是西安的公司- -

第一题太菜 还是忘了咋做 直接return true,对了57%
LC672 正确答案

class Solution {
    public boolean judgePoint24(int[] nums) {
        List<Double> list = new ArrayList<>();
        for (int num : nums) {
            list.add((double) num);
        }
        return backtrack(list);
    }

    private boolean backtrack(List<Double> list) {
        // 只剩下一个数字的时候,判断它是不是 24,因为是浮点数,比较差的绝对值是否小于 0.000001
        if (list.size() == 1) {
            return Math.abs(list.get(0) - 24) < 1e-6;
        }
        // 不止一个数字时,任意取两个数字 a、b
        for (int i = 0; i < list.size(); i++) {
            for (int j = 0; j < list.size(); j++) {
                // 必须是两个不同的数字,因此索引不等
                if (i != j) {
                    double a = list.get(i);
                    double b = list.get(j);
                    // nums 存储新的组合
                    List<Double> nums = new ArrayList<>();
                    // 如果还有其它不等于当前两个所选数字的数字,添加进去
                    for (int k = 0; k < list.size(); k++) {
                        if (k != i && k != j) {
                            nums.add(list.get(k));
                        }
                    }
                    // 计算当前选的两个不同数字的所有组合
                    for (int k = 0; k < 4; k++) {
                        if (k < 2 && j > i) continue;
                        if (k == 0) nums.add(a + b);
                        else if (k == 1) nums.add(a * b);
                        else if (k == 2) nums.add(a - b);
                        else {
                            if (b != 0) {
                                nums.add(a / b);
                            } else {
                                continue;
                            }
                        }
                        if (backtrack(nums)) return true;
                        nums.remove(nums.size() - 1);
                    }
                }
            }
        }
        return false;
    }
}

第二题很简单 LC20

   public boolean IsValidExp(String s) {
        if (s.equals("") || s.length() == 0) {
            return true;
        }
        HashMap<Character, Character> map = new HashMap<>();
        map.put('}', '{');
        map.put(']', '[');
        map.put(')', '(');
        Stack<Character> stack = new Stack<>();
        for (char c : s.toCharArray()) {
            // 是右括号
            if (map.containsKey(c)) {
                if (stack.isEmpty() || map.get(c) != stack.pop()) {
                    return false;
                }
            } else {// 是左括号
                stack.push(c);
            }
        }
        return stack.isEmpty();
    }

第三题更简单 找钱的 忘了哪题

    public int GetCoinCount(int N) {
        N = 1024 - N;
        int count = 0;
        while (N > 0) {
            if (N >= 64) {
                N -= 64;
            } else if (N >= 16) {
                N -= 16;
            } else if (N >= 4) {
                N -= 4;
            } else {
                N--;
            }
            count++;
        }
        return count;
    }

全部评论

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

推荐话题

相关热帖

近期热帖

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

近期精华帖

热门推荐