我有一个数组。有两种46
s的指数3
和7
:如何从数组中删除相同元素的元素
arr = [7, 68, 42, 46, 9, 91, 77, 46, 86, 1]
我得到了一个任务进行排序使用selection sort此阵,但不.sort
。结果应该是:
[1, 7, 9, 42, 46, 46, 68, 77, 86, 91]
所以,我在.rb
文件这样做:
def insertion_sort(arr)
length = arr.size
arr.each_with_index do |number, index|
puts "Now the index is #{index}"
current_minimum = arr.last(length - index).min
puts "Now the current_minimum in last#{length - index} elements is #{current_minimum}"
arr.delete(current_minimum)
arr.insert(index, current_minimum)
end
end
arr = [7, 68, 42, 46, 9, 91, 77, 46, 86, 1]
answer = insertion_sort(arr)
puts answer.to_s
我执行该文件,然后得到这个:
[1, 7, 9, 42, 68, 91, 77, 86, 46]
如果我删除一个46
,它出来这个:
[1, 7, 9, 42, 46, 68, 77, 86, 91]
当数组中有多个单个值出现时,我的代码不起作用。当each_with_index
块转到索引3
时,它将从阵列的其余部分删除所有46
。
任何人都可以告诉我如何解决这个问题吗?
正如您发现的那样,delete()会删除具有该值的所有元素。你可能想'delete_at(index)'只删除一个元素。 –
谢谢@Mark Thomas。你的回答启发了我。 – Caven