从重复的数组元素删除

编程入门 行业动态 更新时间:2024-10-11 09:24:41
本文介绍了从重复的数组元素删除的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

这是从被重复的数组元素中删除的最佳方式。例如,来自阵列

A = [4,3,3,1,6,6]

需要获得

A = [4,1]

我的方法效果太慢的元素的大金额。

ARR = [4,3,3,1,6,6]提出arr.join()nouniq = []L = arr.lengthuniq的=零对于i在0 ..(1- 1)  在0Ĵ..(1- 1)    如果(ARR [J] ==改编[I])和(i!= j)条      nouniq<< ARR [J]。    结束  结束结束ARR =(ARR - nouniq)pact提出arr.join()

解决方案

A = [4,3,3,1,6,6]a.select {| B | a.count(二)== 1}#=> [4,1]

更复杂,但更快的解决方案( O(N)我相信:))

A = [4,3,3,1,6,6]AR = []添加= {PROC |于形式|到<&下;从[1]如果form.uniq.size == from.size}a.sort .each_cons(3){|!C | add.call(AR,B)}AR<<一个[0],如果一个[0] = A [1]!; AR<<一个[-1]如果[-1]!=一个[-2]

What is the best way to remove from the array elements that are repeated. For example, from the array

a = [4, 3, 3, 1, 6, 6]

need to get

a = [4, 1]

My method works to too slowly with big amount of elements.

arr = [4, 3, 3, 1, 6, 6] puts arr.join(" ") nouniq = [] l = arr.length uniq = nil for i in 0..(l-1) for j in 0..(l-1) if (arr[j] == arr[i]) and ( i != j ) nouniq << arr[j] end end end arr = (arr - nouniq)pact puts arr.join(" ")

解决方案

a = [4, 3, 3, 1, 6, 6] a.select{|b| a.count(b) == 1} #=> [4, 1]

More complicated but faster solution (O(n) I believe :))

a = [4, 3, 3, 1, 6, 6] ar = [] add = proc{|to, form| to << from[1] if form.uniq.size == from.size } a.sort!.each_cons(3){|b| add.call(ar, b)} ar << a[0] if a[0] != a[1]; ar << a[-1] if a[-1] != a[-2]

更多推荐

从重复的数组元素删除

本文发布于:2023-11-11 05:16:37,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1577480.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数组   元素

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!