小米算法NMS

小米9.15算法笔试,NMS那题只A了43%。是代码有什么问题吗?

import operator


def iou(box0, box1):
    area0 = (box0[2] - box0[0]) * (box0[3] - box0[1])
    area1 = (box1[2] - box1[0]) * (box1[3] - box1[1])
    inter_x0 = max(box0[0], box1[0])
    inter_x1 = min(box0[2], box1[2])
    inter_y0 = max(box0[1], box1[1])
    inter_y1 = min(box0[3], box1[3])
    inter_area = max(inter_x1 - inter_x0, 0) * max(inter_y1 - inter_y0, 0)
    res = inter_area / (area0 + area1 - inter_area)
    return res


def NMS(bboxes, th):
    bboxes.sort(key=operator.itemgetter(4))
    res = []
    while bboxes:
        box0 = bboxes.pop()
        bboxes = [box1 for box1 in bboxes if iou(box0, box1) <= th]
        res.append(box0)
    return res


n, th = input().split()
n, th = int(n), float(th)
bboxes = [tuple([float(x) for x in input().split()]) for _ in range(n)]
bboxes = NMS(bboxes, th)
for box in bboxes:
    for x in box:
        print('{}'.format(x), end=' ')
    print()


#笔试题目##小米#
全部评论

相关推荐

大猪蹄子哥:1-谁教你这么写教育经历的……咱都这个学历了,很多公司要看本科、硕士,Gap Year的,你啪就给一个上大26届硕士,没了。 2-那堆奖学金揉成一行放最后得了,放前面显得你没技术自信,还是那句话,对于咱这个学历直接上重点,你这上半段看起来像个大专(无恶意 3-专业技能最好点出来细化方向,你熟悉的以太网是UDP还是TCP,是千兆还是万兆等等,多种信号处理……那你倒是说两个啊,后面空着干嘛,会的干嘛不讲 4-项目经历废话太多,描述不专业(怎么还有我,我们这种词),没有数据支撑(是婴儿还是巨人看不出来)。最后如果这些是真的XX项目、比赛,最好点出来,不然更显得像自学着玩的,或者说抄的(经典复现等于我做过 5-个人总结在咱这个分段没用
点赞 评论 收藏
分享
03-29 12:10
门头沟学院 C++
挣K存W养DOG:散漫消极者淘汰,一眼坑爹。实习几个月转正的时候说你加班太少,能力还行态度不够积极裁了,马上老实。
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务