滴滴,8月27日秋招 算法 笔试 第一题

import copy

def swap(s, i, j):
    temp = s[i]
    s[i] = s[j]
    s[j] = temp
    return True

if __name__ == "__main__":
    n = int(input())
    s = [x for x in input().strip().split(' ')]
    # print(s)
    while True:
        s_ = copy.deepcopy(s)
        l = 0
        r = 2
        while r < len(s):
            if s[l+1] == '-' or s[l+1] == '/':
                l += 2
                r += 2
                continue
            if s[l+1] == '+':
                if l == 0 or r == len(s)-1:
                    if l == 0 and (s[r+1] == '+' or s[r+1] == '-') and int(s[l]) > int(s[r]):
                        swap(s, l, r)
                    if r == len(s)-1 and (s[l-1] == '+' or s[l-1] == '-') and int(s[l]) > int(s[r]):
                        swap(s, l, r)
                else:
                    if (s[l-1] == '+' or s[l-1] == '-') and (s[r+1] == '+' or s[r+1] == '-') and int(s[l]) > int(s[r]):
                        swap(s, l, r)
            if s[l+1] == '*':
                if l == 0 and int(s[l]) > int(s[r]):
                    swap(s, l, r)
                if r == len(s)-1 and s[l-1] != '/' and int(s[l]) > int(s[r]):
                    swap(s, l, r)
                if s[l-1] != '/' and int(s[l]) > int(s[r]):
                    swap(s, l, r)
            l += 2
            r += 2
        if s_ == s:
            break
    print(' '.join(s))

#滴滴##秋招##笔试题目##题解#
全部评论

相关推荐

ArisRobert:统一解释一下,第4点的意思是,公司按需通知员工,没被通知到的员工是没法去上班的,所以只要没被通知到,就自动离职。就是一种比较抽象的裁员。
点赞 评论 收藏
分享
11-09 12:17
清华大学 C++
out11Man:小丑罢了,不用理会
点赞 评论 收藏
分享
评论
点赞
8
分享
牛客网
牛客企业服务