第二题: 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)
点赞 1

相关推荐

牛客吹哨人:哨哥晚点统一更新到黑名单:能救一个是一个!26届毁意向毁约裁员黑名单https://www.nowcoder.com/discuss/1525833
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务