我正在 leetcode 中进行 ruby 挑战,我必须删除数组中的重复项并返回具有唯一值的数组。我不断得到:
Line 55: no implicit conversion of Integer into Array (TypeError) in serializer__.rb (-)
我的回答是:
def remove_duplicates(nums)
nums.sort.each_with_index do |num,i|
if nums[i + 1].eql? num
nums.delete_at(i)
end
end
nums
end
我无法找到明确的解决方案来解决此问题。请让我知道我需要做什么。
答案 0 :(得分:1)
工作示例
您需要重新阅读问题...您必须替换数字,并返回剩余数字的数量:
def remove_duplicates(nums)
nums.uniq!
nums.count
end
您返回的是数组,而不是数组的计数。
对原始代码的调整
用你的原始代码来做(注意,根据问题,数组应该已经排序了):
def remove_duplicates(nums)
nums.each_with_index do |num,i|
if nums[i + 1].eql? num
nums.delete_at(i)
end
end
nums.count
end
未排序初始数组的工作示例
如果您想要一个在代码未排序时有效的答案(您的特定问题不是这种情况,但评论者似乎在问这个),并且您需要生成一个排序的唯一数组,覆盖原始数组,并返回新数组的大小,您需要执行以下操作:
def remove_duplicates(nums)
nums.replace(nums.uniq.sort)
nums.count
end