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%,以后时间不够就直接返回也是一种办法
#笔经##哔哩哔哩#
全部评论
24点我一开始看到也是一头雾水,,,后来想想好像也没多少数据啊&hellip;直接来个全排列再dfs运算符&hellip;
点赞 回复 分享
发布于 2020-08-14 08:23
楼主是在四个数种选两个进行运算,结果扔回去,再选两数递归?
点赞 回复 分享
发布于 2020-08-14 00:02
第一题直接返回False,有48%,居然True要高一点诶😅
点赞 回复 分享
发布于 2020-08-13 21:34
第一题不考虑运算符优先级?
点赞 回复 分享
发布于 2020-08-13 21:26
楼主你好,请问你是什么岗位?开发的话,是Java方向还是C++方向?或者其他语言方向~
点赞 回复 分享
发布于 2020-08-13 20:46

相关推荐

今天9.23啦,距离国庆还有七天!再熬一下!马上放假!——————————今天投了以下岗位!😁拼多多:这次开的是正式批了,技术岗和非技术各自可以投一个,我投的两个岗位与之前投递岗位完全相同,还是数分+运营管培生,拼多多卡学历比较严重,我这个应该是莫得机会携程:携程每个人只能投递一个岗位,所以投递之前需要看好自己要的岗位,我投递的业务运营在我看来属于业务型数分,携程还有一个专门的数分岗,就算是技术型数分了(点击就送测评)。灵犀互娱:阿里系属于很早之前开的了,只是我一直没有投递,灵犀互娱填写简历也是需要写游戏经历,同时建议写一些与三国志类似的游戏体验经历。————————小tips😃[一R]:大家有特别想投的岗位一定要快点投,很多公司已经有些岗位在关闭了(比如小鹏)[二R]:一天投五个建议可以先投一个想去但是很难的,再投两个和岗位jd很符合的,再投两个比较随缘的,不要把鸡蛋全装到一个篮子里[三R]:实习僧,boss直聘,牛客也有一些校招岗,都可以参考着投一下——————————秋招进度😉挂&nbsp;百度(提前批&nbsp;管培生)&nbsp;京东(tet&nbsp;正式岗)&nbsp;极客未来&nbsp;优酷(运营专员&nbsp;数据工程师)&nbsp;海信&nbsp;英雄电竞&nbsp;虾皮&nbsp;小鹏(销售管理&nbsp;质量运营)滴滴提前批&nbsp;拼多多(提前批管培)&nbsp;大参林医药&nbsp;oppo(数据分析师&nbsp;产品运营)阿里健康(策略风险分析师&nbsp;行业运营)游卡&nbsp;莉莉丝提前批测评挂:多益网络面试挂:京东新锐之星京东门店运营测评:大疆&nbsp;&nbsp;科大讯飞&nbsp;远景能源&nbsp;点点互动&nbsp;快手&nbsp;美团(延期)小米&nbsp;4399&nbsp;去哪儿旅行&nbsp;携程一面:&nbsp;汇川技术
我的秋招日记
点赞 评论 收藏
分享
牛客22151653...:0.18+0.18
投递京东等公司10个岗位
点赞 评论 收藏
分享
评论
3
7
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务