【发布时间】:2016-10-24 18:21:11
【问题描述】:
#创建空数组(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 开始,而不是 0 开始 j 或 k?
我知道我可以使用 .uniq 并将数组转换为一个集合,然后返回一个数组,或者只是将数组与 & 相交,但我想在没有 ruby 的“快捷方式”的情况下实现它,有什么建议吗?
【问题讨论】:
-
@AndreyDeineko该死的,我刚刚编辑了,因为我知道退伍军人会这么说,你快
-
顺便说一下,Array#uniq 返回的是一个数组,而不是一个集合。所以
array2 = array1.uniq就可以了
标签: arrays ruby duplicates