arrays - 从数组中删除元素的复杂度是多少?

标签 arrays ruby time-complexity

从数组中删除元素的时间复杂度是多少?具体来说,使用 array.pop 删除最后一个元素时的复杂度是多少? ?

最佳答案

它的O(1)

来源:array.c

VALUE
rb_ary_pop(VALUE ary)
{
  long n;
  rb_ary_modify_check(ary);
  n = RARRAY_LEN(ary);
  if (n == 0) return Qnil;
  if (ARY_OWNS_HEAP_P(ary) && 
      n * 3 < ARY_CAPA(ary) &&
      ARY_CAPA(ary) > ARY_DEFAULT_SIZE)
  {
    ary_resize_capa(ary, n * 2);
  }
  --n;
  ARY_SET_LEN(ary, n);
  return RARRAY_AREF(ary, n);
}

正如您所看到的,它只是减少数组的长度并返回该索引处的值。有时,弹出可能会触发调整大小,时间复杂度为 O(n)

关于arrays - 从数组中删除元素的复杂度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35701990/

相关文章:

python - Numpy 在数字末尾截零

ruby-on-rails - Rails 3.2.11 中模型子目录的单表继承

ruby-on-rails - print + each() block - 为什么加入不起作用?

c - 三重嵌套循环的时间复杂度?

Java ArrayList构造函数时间复杂度

javascript - Node.js 和 Express : Pushing to array results in "[object Object]"

jQuery 数组与 == 的比较?

c - 存储和调用动态数组中的值时出错 : program output not as expected

ruby - 如何在使用 Ruby Mechanize 加载页面之前设置 Referer header ?

c - 递归函数find(n)的时间复杂度