Ruby输入数组,输出数组没有重复

时间:2016-10-24 18:21:11

标签: arrays ruby duplicates

#create empty array(array1)

 array1 = [] 
    i = 0

#从用户那里获取10个数字并将它们存储在数组中

 while array1.size < 10    
        print "Enter a number: "
        array[i] = gets.chomp.to_i
        i += 1
    end

#仅将唯一元素推送到新数组(array2)

k = 0
j = 0
array2 = []

while k < array1.size
    if array1[k] != array1[j]
        if array2.include? (array1[k])
            puts "Element already exists"
        else
            array2.push(array1[k])
        end
        j += 1
    end
    k += 1
end

puts array2

它仅在某些情况下有效,但在任何时候,由于某种原因,第一个唯一的元素没有被添加到新数组中,我应该从1开始j或k,而不是0?

我知道我可以使用.uniq并将数组转换为一个集合,然后返回一个数组,或者只是将数组与&amp;相交,但我想让它成为没有ruby&#34;快捷键&#34; ,有什么建议吗?

1 个答案:

答案 0 :(得分:0)

不确定。 k和j在启动时都等于0。 所以array1 [k] == array1 [j]为真,你得到k + = 1。 k现在为1,你错过了array1的第一个元素。

没有特别关于这个解决方案的Rubyish:

array2 = []
array1 = [1, 2, 3, 3, 2, 4, 5, 6]

i=0
while i<array1.size do
  element = array1[i]
  if !array2.include?(element) then
    array2.push(element)
  end
  i += 1
end

puts array2.inspect