2022.08.27 完美世界笔试

问题1

问题描述:讲二叉树的n个节点用[1,n]内的整数进行编号,给定先序、后序遍历,输出中序遍历

吐槽:showmebug这个代码环境、调试的我想吐,编辑器常常卡死,所以后来就赶紧提交做360去了,自己本地测试用例没问题,我甚至跳入到下一题都卡死五分钟。。。可能做的人太多了

思路:前序是:根左右  中序是:左根右  后序是:左右根

给定先、后,可以先确定根节点pre[0],左孩子就是pre[1],右孩子肯定是post[-2]

依次递归喽

代码

def solve(preorder, postorder, ans):
    if len(preorder) == 1:
        ans.append(preorder[0])
        return
    root = preorder[0]
    left_root = preorder[1]
    right_root = postorder[-2]
    for i, x in enumerate(preorder):
        if x == right_root:
            break
    for j, x in enumerate(postorder):
        if x == left_root:
            break
    solve(preorder[1: i], postorder[: j + 1], ans)
    ans.append(root)
    solve(preorder[i:], postorder[j + 1: -1], ans)

def solution(preorder: list, postorder: list)-> list:
    ans = []
    solve(preorder, postorder, ans)
    return ans

问题2

问题描述:已知sigmoid之前的输入向量x和对应的标签y,请你求出Loss对输入向量x的梯度【蒙蔽了,没做】

问题3

问题描述:IOU计算 输入两个矩形,计算IOU IOU=|A\cap B|/|A\cup B|,四舍五入保留4位小数

这个是核心代码模式:简单计算就可以了,但是吧,这个网站我不会测试,还卡死,就算了吧

def cal_merge(l1, r1, l2, r2):
    return max(0, min(r1, r2) - max(l1, l2))

def solution(cx1:float, cy1:float, w1: float, h1:float, cx2:float, cy2:float, w2:float, h2:float)->float:
    w1 = w1 / 2
    h1 = h1 / 2
    w2 = w2 / 2
    h2 = h2 / 2
    w = cal_merge(cx1 - w1, cx1 + w1, cx2 - w2, cx2 + w2)
    h = cal_merge(cy1 - h1, cy1 + h1, cy2 - h2, cy2 + h2)
    result = w * h
    return round(result, 0)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值