如何在不使用`uniq`的情况下删除数组中的重复项?

神圣的莫利

我的编码练习的目的是在不使用该uniq方法的情况下消除数组中的重复项这是我的代码:

numbers = [1, 4, 2, 4, 3, 1, 5]

def my_uniq(array)
  sorted = array.sort
  count = 1
  while count <= sorted.length
    while true
      sorted.delete_if {|i| i = i + count}
      count += 1
    end
  end
  return sorted
end
  • 当我运行它时,我得到一个无限循环。怎么了?
  • 我可以使用自己delete的方式count吗?
  • 它将如何执行?count在方法迭代到下一个索引之前,继续到数组末尾吗?
  • 我使用each进行了此操作map,并得到了相同的结果。什么是做到这一点使用的最佳方式eachdelete_ifmap,或while环(与第二环是比较反对的第一个)?
MIRC

问题是内部循环是一个无限循环:

while true
  sorted.delete_if {|i| i = i + count}
  count += 1
end #while

您可能可以做您正在做的事情,但这并不能消除重复项。

一种方法是:

numbers = [1, 4, 2, 4, 3, 1, 5]
target = []
numbers.each {|x| target << x unless target.include?(x) }
puts target.inspect

将其添加到数组类中:

class ::Array
    def my_uniq
       target = []
       self.each {|x| target << x unless target.include?(x) }
       target
    end
end

现在您可以执行以下操作:

numbers = [1, 4, 2, 4, 3, 1, 5]
numbers.my_uniq

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在不使用另一个数组的情况下从数组中删除重复项?

如何在不使用 Java 索引的情况下从 Arraylist 中删除数组元素

如何在不使用内置函数的情况下对字符串数组中的重复项进行排序和删除?

如何在不使用字典或集合的情况下删除列表中的重复项?

如何在不使用数组的情况下删除字符串中的重复单词?

如何在忽略标点的情况下删除数据帧中的重复项?

在不使用Util类的情况下从数组中删除重复项

如何在不使用Set的情况下有效地从数组中删除重复项

在不更改元素顺序的情况下删除数组中的重复项

如何在不使用集合的情况下从python列表中删除重复的单词?

如何在SQL中不使用DISTINCT的情况下删除重复值?

如何在不使用硬核索引的情况下擦除父级数组中子级数组的重复项

如何在不使用内置函数的情况下从python中的数组中删除元素

如何在不使用for循环的情况下从数组列表中删除元素

C ++如何在不使用向量的情况下从数组中删除0个值

在不使用额外数组的情况下删除重复字符

在不使用set的情况下从嵌套列表中删除重复项

在不使用任何数据结构的情况下从输入中删除重复项

在不使用熊猫的情况下合并和删除两个 csv 中的重复项

在不使用set()的情况下删除元组中的重复项

Java-在不使用外部类或方法的情况下计算数组中的重复项?

如何在不使用While的情况下删除左侧重复的字符串?

如何在不使用星号,循环,数组,导入的情况下重复字符串消息

在不使用shift()方法的情况下删除数组中的第一个元素

如何删除数组中的重复项?

如何删除数组中的重复项

如何在保留最新数据的情况下从Spark数据框中删除重复项?

如何在不同情况下(VBA)在Excel中删除重复项?

在不使用Java的情况下删除数组的第一个元素