本文介绍了从重复的数组元素删除的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是从被重复的数组元素中删除的最佳方式。例如,来自阵列
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]
更多推荐
从重复的数组元素删除
发布评论