bilibili笔试8.13,后端开发方向(Python)

选择题就不说了,本身记不住而且也不怎么会,就直接上编程题吧!
(1)4个数能否加减乘除得到24
给出四个数字问能否通过加减乘除得到24,如果能就返回TRUE,否则FALSE:7,2,1,10可以通过7*2+1*10得到。
随意安排四个数和三个位置的操作符,四个数的排列有4*3*2=24个,三个操作符的位置每个位置有4个选择,因此是4*4*4=64的方式,所以总共就是24*64=1536的可能性,4个数的数据比较弱,挨个检查每个可能性暴力就完事儿了。
def f(arr):
    f = 0
    f1 = lambda a, b : a + b
    f2 = lambda a, b : a - b
    f3 = lambda a, b : a * b
    f4 = lambda a, b : a / b
    acts = ['+', '-', '*', '/']
    d = {'+':f1, '-':f2, '*':f3, '/':f4}
    
    def dfs(curr, left):
        nonlocal d, f, acts
        if not left:
            if curr == 24:
                f += 1
            return
        for i in range(len(left)):
            for act in acts:
                dfs(d[act](curr, left[i]), left[i + 1:])
    
    for i in range(len(arr)):
        dfs(arr[i], arr[:i] + arr[i + 1:])
    return f > 0



(2)括号是否平衡
leetcode原题不多说了吧。
def isValid(self, s: str) -> bool:
    st = []
    d = {')':'(', ']':'[', '}':'{'}
    for c in s:
        if c in d:
            if st and st[-1] != d[c]:
                return False
            if st and st[-1] == d[c]:
                st.pop()
            if not st:
                st.append(c)
        else:
            st.append(c)
    return len(st) == 0



(3)找零钱
感觉是相对最简单的一道题,有1,4,16,64四种零钱和1000块,花掉N元之后求还需要找多少张,直接贪心就完事儿。
def f(N):
    a = [64, 16, 4, 1]
    res, left = 0, 1024 - N
    while left:
        if left < a[0]:
            a.pop(0)
        else:
            res += left // a[0]
            left -= a[0] * (left // a[0])
            a.pop(0)
    return res


PS:前面两道题给的是输入输出的测试,本以为要自己定义输入输出结果发现后面给的是leetcode的形式,输入输出定义好了,所以前面的实例不知道加上去有什么用?
PPS:其实前俩题都输出的是布尔型的结果,第一题直接return True有57%的通过率;第二题如果括号长度为奇数返回False,长度为0返回True也能通过60%,以后时间不够就直接返回也是一种办法
#笔经##哔哩哔哩#
全部评论
楼主你好,请问你是什么岗位?开发的话,是Java方向还是C++方向?或者其他语言方向~
点赞 回复 分享
发布于 2020-08-13 20:46
第一题不考虑运算符优先级?
点赞 回复 分享
发布于 2020-08-13 21:26
第一题直接返回False,有48%,居然True要高一点诶😅
点赞 回复 分享
发布于 2020-08-13 21:34
楼主是在四个数种选两个进行运算,结果扔回去,再选两数递归?
点赞 回复 分享
发布于 2020-08-14 00:02
24点我一开始看到也是一头雾水,,,后来想想好像也没多少数据啊&hellip;直接来个全排列再dfs运算符&hellip;
点赞 回复 分享
发布于 2020-08-14 08:23

相关推荐

10-09 22:05
666 C++
找到工作就狠狠玩CSGO:报联合国演讲,报电子烟设计与制造
点赞 评论 收藏
分享
牛客263158796号:我领羊一面后十天不挂也不推进 今天问hr说等前序的第一批意向发完看情况再看是否推进
点赞 评论 收藏
分享
3 7 评论
分享
牛客网
牛客企业服务