华为笔试

前两个AC了,最后一个只过了36%,不知道怎么优化

第一题

def solution(s):
    res1 = s.split()[1:]
    res1 = [i for i in res1 if i]
    res2 = []
    for subs in res1:
        if len(subs) <= 8:
            res2.append(subs + "0"*(8-len(subs)))
        else:
            while len(subs) > 8:
                res2.append(subs[:8])
                subs = subs[8:]
            res2.append(subs + "0"*(8-len(subs)))
    res2.sort()
    return " ".join(res2)

s = input()
print(solution(s))

第二题

def solution(s):
    if not s:
        return ""
    num_set = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}
    dic = {")": "(", "]": "[", "}": "{"}
    while s[0] in dic.values():
        s = s[1:-1]
    n = len(s)
    stack = []
    for i in range(n):
        if s[i] not in dic:
            stack.append(s[i])
        else:
            left = dic[s[i]]
            curs = ""
            while stack[-1] != left:
                curs += stack.pop()
            stack.pop()
            curnum = ""
            while stack and stack[-1] in num_set:
                curnum += stack.pop()
            curnum = int(curnum[::-1])
            curres = curs * curnum
            stack += curres.split()
    return "".join(stack[::-1])

s = input()
print(solution(s))

第三题

def solution(a, b, array, n, m):
    if not array:
        return 0
    res = process(a[0], a[1], array, n, m, b[0], b[1])
    return res


def process(i, j, array, n, m, aimi, aimj):
    if i == aimi and j == aimj:
        return 1
    res = 0
    if i - 1 > 0 and array[i-1][j] > array[i][j]:
        res += process(i-1, j, array, n, m, aimi, aimj)
    if i + 1 < n and array[i+1][j] > array[i][j]:
        res += process(i+1, j, array, n, m, aimi, aimj)
    if j - 1 > 0 and array[i][j-1] > array[i][j]:
        res += process(i, j-1, array, n, m, aimi, aimj)
    if j + 1 < m and array[i][j+1] > array[i][j]:
        res += process(i, j+1, array, n, m, aimi, aimj)
    return res


nm = input().split()
n, m = int(nm[0]), int(nm[1])
array = []
for i in range(n):
    line = input().split()
    line = list(map(int, line))
    array.append(line)
ab = list(map(int, input().split()))
a = ab[:2]
b = ab[2:]
print(solution(a, b, array, n, m))
#华为##笔试题目##题解#
全部评论
大神,可以麻烦描述一下题目么,谢谢
点赞 回复 分享
发布于 2019-04-17 11:25
大神你好,请问第二题24行 为什么 stack += curres.split() 用stack += curres代替,可以吗
点赞 回复 分享
发布于 2019-04-15 23:18
第一题我只过了80老哥能帮我看下吗
点赞 回复 分享
发布于 2019-04-11 08:59
第三题i-1>0是不是要改成i>0,还有j也是。感觉第一行和第一列并没有参与计算。
点赞 回复 分享
发布于 2019-04-11 00:59
你面什么岗?
点赞 回复 分享
发布于 2019-04-10 23:25

相关推荐

不愿透露姓名的神秘牛友
07-01 17:13
想去,但是听说加班强度实在难崩,所以拒绝了,现在有点心梗对面hr感觉也是实习生,打电话的时候怪紧张的,但是感觉人很好嘞
水中水之下水道的鼠鼠:哥们这不先去体验一下,不行再跑呗,大不了混个实习经历(有更好的转正offer就当我没说)
点赞 评论 收藏
分享
Southyeung:我说一下我的看法(有冒犯实属抱歉):(1)简历不太美观,给我一种看都不想看的感觉,感觉字体还是排版问题;(2)numpy就一个基础包,机器学习算法是什么鬼?我感觉你把svm那些写上去都要好一点。(2)课程不要写,没人看,换成获奖经历;(3)项目太少了,至少2-3个,是在不行把网上学习的也写上去。
点赞 评论 收藏
分享
06-02 15:17
门头沟学院 Java
心爱的idea:怎么会呢 应该是打招呼有问题 问就说实习6个月全国可飞随时到岗
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 17:58
点赞 评论 收藏
分享
评论
点赞
29
分享

创作者周榜

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