arrays - Ruby算法求解

标签 arrays ruby algorithm

所以我有一个基本问题需要解决。我需要采用以下嵌套数组 [1, 2, ["str", 1], [[2]]] 并返回 [1,2,"str",1,2]。最终删除所有嵌套数组。以下是我的不完整解决方案:

test = [1, 2, ["str", 1], [[2]]]

def remove_array(array)
    new_array = []
    array.each do |item|
        if item != Array
            puts "you are here"
            new_array << item
        else
            remove_array(item)
        end
    end
end

remove_array(test)

这是一个经典的递归方法。但是,我似乎想不出如何维护new_array。每次我将数组项传递给它时,new_array 都不会保持其状态。我还想指出,我知道内置方法 flatten ,因为我试图在没有所述方法的情况下解决解决方案。任何建议将不胜感激。

最佳答案

def my_flatten(arr)
  result = []

  arr.each do |el|
    if el.is_a?(Array)
      result.concat(my_flatten(el))
    else
      result << el
    end
  end

  result
end

您的想法通常是正确的,但您从未将内部数组元素添加到结果中。

关于arrays - Ruby算法求解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33358657/

相关文章:

javascript - 上传 pdf/doc 等并根据请求将数据发送到服务器 - Javascript

ruby - 查找字符串中的出现并保留出现的顺序

ruby-on-rails - 在 Rails 中的一行 Ruby 'if else' 语句中添加类或 ID?

algorithm - 根据给定索引重新排序数组

java - 对孤立的 arraylist 元素执行乘法

algorithm - 能被数字 M 整除的最短数字

arrays - 数组向量的内存布局是什么?

javascript - 访问 javascript 数组 `myArray[1,3]` 中的值时传递 2 个值

javascript - 我需要一个 JavaScript 数组来保存指向图像的链接,以便在图像源中工作和使用

Ruby Hash 默认情况下在 ruby​​ 1.8.7 中排序