商汤算法第二题找top k 相近的训练数据怎么做的?

😂😂写了一个查找最大最小值的函数,先O(NlogN)排序训练值和测试值差值绝对值的大小,然后O(N)找到最接近的数的下标,然后向两边找k-1个绝对值差比较小的数,时间复杂度应该是O(NlogN)?用用例测了下没问题,想知道是哪里出了问题。大佬来交流下,#商汤科技##笔试题目#
全部评论
如果有重复数据咋办啊 题目也没说
点赞 回复 分享
发布于 2019-09-21 21:03
开始用numpy找索引,后来发现不能用numpy然后自己些,快写完时间没了
点赞 回复 分享
发布于 2019-09-21 21:11
第二题: def method(train_data, test_data, n, m, k):     train_data.sort()     test_data = zip(test_data, range(m))     test_data.sort(key=lambda x: x[0])     test_data, test_index = zip(*test_data)     result = []     train_left = 0     train_right = k - 1     for i in range(m):         d_left = train_data[train_left] - test_data[i]         if train_right + 1 < n:             d_right = train_data[train_right + 1] - test_data[i]             while (abs(d_right) < abs(d_left)) or \                     (abs(d_right) == abs(d_left) and train_data[train_right + 1] == train_data[train_left]):                 train_left += 1                 train_right += 1                 if train_right + 1 >= n:                     break                 d_left = train_data[train_left] - test_data[i]                 d_right = train_data[train_right + 1] - test_data[i]         result.append([train_data[train_left], train_data[train_right]])     result = zip(result, test_index)     result.sort(key=lambda x: x[1])     result, test_index = zip(*result)     for r in result:         r = map(str, r)         print(" ".join(r)) [n, m, k] = [6, 3, 2] train_data = [1, 50, 3, 4, 100, 2] test_data = [75, 3, 30] method(train_data, test_data, n, m, k)
点赞 回复 分享
发布于 2019-09-21 21:12
我是排序后用一个跨度k的滑动窗口,自己测试都对,提交0,一直不爽在调试,浪费70分钟无果,自闭了😭
点赞 回复 分享
发布于 2019-09-22 12:04

相关推荐

昨天 13:29
已编辑
湖南铁道职业技术学院 后端
小红书 后端选手 n*16*1.18+签字费期权
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务