区块链技术博客
www.b2bchain.cn

找出列表中的元素对升序排列程序员分享

本文介绍了找出列表中的元素对升序排列程序员分享,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

1999j0615une:如果有输入 a₁, …, aₙ, n 为偶数且 aᵢ ∈ ℝ. 使用曼哈顿距离为距离方程,即 dis(aᵢ, aⱼ) = | aᵢ − aⱼ |. 输出应为列表中的 n/2 个元素对,以距离升序排列。

如 input [1, 0.4, 3, 1.1], output [(1, 1.1), (0.4, 3)].

input [1, 0.1, 2, 2.4, 3, 4, 1.5], output [(2, 2.4), (1, 1.5), (3, 4)].

我自己想是用笨办法算出所有 C(n,2)的组合计算距离再排列。

def not_in_pair_of_list(i, ls):     return not i in [p[0] for p in ls] + [p[1] for p in ls]  def calc(ls):     ls = sorted(ls)     d ={}     for idx1, i in enumerate(ls[:-1]):         for idx2, j in enumerate(ls[idx1+1:], idx1 + 1):             d[(i,j)] = j - i                  res = []     for pair in sorted(d, key = lambda k: d[k]):         i, j = pair         if not_in_pair_of_list(i, res) and not_in_pair_of_list(j, res):             res.append(pair)     return res  ls = [1, 0.1, 2, 2.4, 3, 4, 1.5] assert calc(ls) == [(2, 2.4), (1, 1.5), (3, 4)] 

可这只有 O(n²)。有没有大神支招,看看有没有更快的。我觉得用 minheap 可以,但提取出新元素对时还要重新计算。

avastms:什么乱七八糟的

zok2002:备案期间域名能解析境外吗,境内不解析

revalue:头戴式耳机。最近发现平时戴“头带”的地方,白头发特别多。本人白头发不是平均分布的,就是主要分布在耳机“头带”的地方,尤其是头顶。在公司研究了一圈,玩耳机的、不玩耳机的。发现玩耳机的这一区域白头发特别猛。有没有哪位水友一起研究一下

xiaoyazi:

Cyshall:除了服装和场景还可以,其余的是真的烂,太烂了,要不是因为刘亦菲真特么看不下去。Chell:觉得刘亦菲演技也一般(粉丝别打我)

waiaan:就是想让白开水喝起来能有汽水的那种感觉(二氧化碳),不用甜的。terence4444:泡腾片的问题不在糖,而是盐。没想到吧

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 找出列表中的元素对升序排列程序员分享
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们