没有将整数隐式转换为数组

时间:2021-07-07 18:14:26

标签: ruby

我正在 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

我无法找到明确的解决方案来解决此问题。请让我知道我需要做什么。

1 个答案:

答案 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
相关问题