【问题标题】:Array insert and shift数组插入和移位
【发布时间】:2017-04-02 14:34:59
【问题描述】:

我有以下数组:

a = [0, 1, 2, 3, 4, nil, nil]

我想在索引 2 中插入一个元素 num,这样结果数组就是:

a = [0, 1, num, 2, 3, 4, nil] # note the size hasn't changed

我意识到数组可能不是最适合本练习的数据结构,但假设这是一个要求。

我该怎么做?

为什么?

我正在尝试解决这个问题:

给定两个排序数组 A 和 B,其中 A 在末尾有足够大的缓冲区来容纳 B。编写一个方法将 B 按排序顺序合并到 A 中

到目前为止,这是我的代码:

def merge(a, b) # merge b -> a
  pointer = 0 # on a
  while !b.empty? do
    case b.first <=> a[pointer]
    when 0, 1 next
    when -1
      # insert element, shift array to the right
    end
  end
end

【问题讨论】:

  • 你真的需要 nils 吗?描述你的确切目的可能有助于人们更好地回答。
  • 已编辑详细信息
  • 值得注意的是,这不是我提到的问题的最佳解决方案。最好将 a & b 中的元素排序到 a 的末尾,最大的在前。这样,就不需要换档了
  • 如果您对a &amp; b 进行排序,则会丢失对ab 进行排序的信息。最有效的方法是使用一个空的c 数组。移位非常昂贵,合并排序不需要。

标签: ruby


【解决方案1】:

这是你要找的吗?

a.insert(2, num)

不确定您是否希望手动移动元素,但这应该会为您完成所有工作。

【讨论】:

  • 是的,但使用 .[0...-1] 链接以保留大小。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-30
  • 1970-01-01
  • 2023-03-15
  • 2023-03-30
  • 2010-10-29
  • 2015-11-30
  • 1970-01-01
相关资源
最近更新 更多