首页 > B站2021校招后端笔试
头像
AmazingM
编辑于 2020-08-13 20:17
+ 关注

B站2021校招后端笔试

时间:08-13 19:00:00 -- 20:45:00
20道选择,3道代码
我只能说B站这一手真的离谱

# 第一题:24点游戏
# 思路:对4数字和运算符全排列
# @param arr int整型一维数组
# @return bool布尔型
#
class Solution:
    def Game24Points(self , arr ):
        a = arr
        res = []

        def dfs(x):
            if x == len(a) - 1:
                res.append(a[:])
                return

            for i in range(x, len(a)):
                a[x], a[i] = a[i], a[x]
                dfs(x + 1)
                a[x], a[i] = a[i], a[x]

        dfs(0)

        def al_op(nums):
            assert len(nums) == 4
            ops = [lambda x, y: x + y,
                   lambda x, y: x - y,
                   lambda x, y: x * y,
                   lambda x, y: x / y,
                   ]
            find = False
            for i in range(4):
                for j in range(4):
                    for k in range(4):
                        if int(ops[k](ops[j](ops[i](nums[0], nums[1]), nums[2]), nums[3])) == 24:
                            find = True

            return find

        flag = False
        for r in res:
            if al_op(r):
                flag = True

        return flag
# 第二题:判断括号字符串是否正确
# 栈的经典例题,遇左括号压栈,遇右括号弹栈比较
# @param s string字符串
# @return bool布尔型
#
class Solution:
    def IsValidExp(self, s):
        # write code here
        n = len(s)
        if n == 0:
            return True
        if n % 2 == 1:
            return False

        stack = []
        for c in s:

            if c in ['(', '{', '[']:
                stack.append(c)
            elif c in [')', '}', ']']:
                tmp = stack.pop()
                if tmp == '(' and c == ')'&nbs***bsp;tmp == '{' and c == '}'&nbs***bsp;tmp == '[' and c == ']':
                    continue
                else:
                    return False

        if len(stack) == 0:
            return True
        else:
            return False


if __name__ == '__main__':
    s = Solution()
    print(s.IsValidExp("([)]"))

# 第三题:1024块钱花了N块以后,64, 16, 4, 1四种硬币,找零最少的硬币个数
# 
# @param N int整型
# @return int整型
#
class Solution:
    def GetCoinCount(self , N ):
        # write code here
        res = 0
        money = 1024 - N

        for base in [64, 16, 4, 1]:

            res += money // base
            money %= base


        return res





全部评论

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

推荐话题

相关热帖

近期热帖

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

近期精华帖

热门推荐