递归算法的空间复杂度

2024-01-14

我在一次面试中被问到,解决问题的有效方法是检查回文。

现在我可以做两件事:

  1. 从 i = 0 开始到 i = n/2 并比较第 i 个和第 n 个字符是否相等。
  2. 我可以使用递归来检查第一个和最后一个是否相同,并且字符串的其余部分是否为回文。

第二个是递归的。我的问题是算法的递归和非递归版本的空间复杂度有什么区别?


阅读:

  1. http://www.codeproject.com/Articles/21194/Iterative-vs-Recursive-Approaches http://www.codeproject.com/Articles/21194/Iterative-vs-Recursive-Approaches
  2. 递归还是迭代? https://stackoverflow.com/questions/72209/recursion-or-iteration

基本上,递归算法会增加开销,因为您将递归调用存储在执行堆栈中。

但如果递归函数是调用的最后一行(尾递归),则没有额外的惩罚。

这当然是两种算法是相同的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

递归算法的空间复杂度 的相关文章

  • Python list.clear() 时间和空间复杂度?

    我正在写一篇关于 Python 的博客文章list clear 方法 我还想提一下底层算法的时间和空间复杂度 我预计时间复杂度是O N 迭代元素并释放内存 但是 我发现了一个article其中提到它实际上是一个O 1 手术 然后 我在CPy
  • T(n) = T(n/10) + T(an) + n,如何解决这个问题?

    更新 我仍在寻找不使用外部资源的解决方案 Given T n T n 10 T an n对于一些a 然后 T n 1 if n lt 10 我想检查以下是否可能 对于某些a值 我想找到最小的可能 a For every c gt 0 the
  • 内置 python 函数的时间/空间复杂度

    split strip open 内置 python 函数 的时间 空间复杂度是多少 有谁知道我可以在哪里查找这些函数的时间 空间复杂度 确切的答案将取决于输入到函数中的属性 最简单的找出方法可能是检查这些函数的源代码 python 源代码
  • 反转字符串时间和空间复杂度

    我编写了不同的 python 代码来反转给定的字符串 但是 无法确定其中哪一个是有效的 有人可以指出这些算法在时间和空间复杂度上的差异吗 def reverse 1 s result for i in s result i result r
  • 打印 n 对括号的所有有效组合的算法

    我正在解决问题陈述中提出的问题 我知道我的解决方案是正确的 运行程序 但我很好奇我是否正确分析了我的代码 如下 def parens num return if num 1 paren arr parens num 1 each do pa
  • 空间复杂度的定义

    通过时间复杂度 我们将算法的运行时间理解为输入大小 表示内存中的实例所需的位数 的函数 那么对于这个观察 我们如何定义空间复杂度呢 这显然与实例的大小无关 空间复杂度可以通过多种方式定义 但通常的定义如下 我们假设输入存储在只读存储器中的某
  • 在元组列表中获得最大并发的有效方法是什么?

    我一直在努力以有效的方式解决这个问题 问题是 问题陈述 给定以下形式的元组列表 start1 end1 start2 end2 start3 end3 startn endn 其中 start 和 end 是正整数 每个元组代表一个时间窗口
  • 图灵机的时间复杂度和空间复杂度

    我认为图灵机的时间复杂度和空间复杂度的定义是相同的 我无法区分 它们之间 请帮我 谢谢 对于图灵机 时间复杂度是当机器根据某些输入启动时磁带移动的次数的度量 空间复杂度是指机器运行时写入磁带的单元数 The time complexity
  • 归并排序时间和空间复杂度

    我们以合并排序的实现为例 void mergesort Item a int l int r if r lt l return int m r l 2 mergesort a l m 1 mergesort a m 1 r 2 merge
  • 递归斐波那契算法的空间复杂度是多少?

    这是 破解编码面试 第五版 中斐波那契数列的递归实现 int fibonacci int i if i 0 return 0 if i 1 return 1 return fibonacci i 1 fibonaci i 2 After w
  • Redis 数据结构空间要求

    redis中排序集和列表的空间有什么区别 我的猜测是 排序集是某种平衡二叉树 列表是链表 这意味着除了我为每个值编码的三个值 键 分数 值 之外 尽管我会将链表的分数和值混合在一起 但开销是链表需要跟踪一个另一个节点 二叉树需要跟踪两个 因
  • 为什么字符串的空间复杂度是 O(n) 而数字是 O(1)?

    我对辅助空间复杂性有点迷失 在我参加的讲座中 讲师指出字符串的空间复杂度为 O n 因为字符串的长度 n 会有所不同 但诸如数字 布尔值 未定义等原语具有恒定的空间复杂度 O 1 我很困惑 因为如果字符串的空间长度不同 那么数字也不一样吗
  • 计算循环空间复杂度的基础是什么? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 想象一下 您循环 n 次 并且每次迭代都会创建一个空间 n 的字符串 其范围仅在该迭代内 因此在下一次迭代中不再可访问 我会说我使用 O
  • 给定一个整数数组,找到线性时间和常量空间中第一个缺失的正整数

    换句话说 找到数组中不存在的最小正整数 该数组也可以包含重复项和负数 这个问题是 Stripe 在编程采访中提出的 我设计了一个解决方案 如下所示 include
  • 如果a>=b 那么O(a+b)=O(a)?

    我试图更好地理解这个想法O n 所以我对此感到好奇 如果我们知道 a gt b 那么O a b O a 我知道O a O a O 2a O a 但我想知道对于比 a 小的东西是否正确 我的意思是 如果O a b O a 我认为这是真的 因为
  • 为什么 numpy.var 是 O(N) 空间?

    我有一个 13GB 的数组 我打电话numpy var对其进行计算方差 然而 它又分配了约 13GB 来执行此操作 为什么需要 O N 空间 或者我打电话numpy var以错误的方式 import numpy as np data pri
  • 用 O(1) 空间逐行读取数字

    许多编码挑战在同一行中有多个数字 通常第一行告诉多数字行中有多少个数字 4 31 415 9 26 通常我只是读整行 然后 split 并将字符串映射到数字 但有没有好的办法not一次读取整行 而不是一次读取一个数字 为了节省内存 要么因为
  • 布隆过滤器的实现

    使用布隆过滤器 我们将获得空间优化 cassandra 框架也有 Bloom Filter 的实现 但具体来说 这种空间优化是如何实现的呢 您可以使用以下示例了解它如何节省空间 假设我在 Google Chrome 团队工作 我想向浏览器添
  • 在不存储整个数组的情况下单遍查找第 K 大数

    我想到的算法是 保持大小为 K 的最大堆 插入每个元素 如果堆已满 则丢弃较小的值 最后 第K个max是MaxHeap中较小的一个 这将给我 O NlogK 有更好的算法吗 我无法进行快速选择 因为数组无法存储在内存中 根据您的内存限制 您
  • PHP 内置函数复杂性(isAnagramOfPalindrome 函数)

    我在过去的两个小时里一直在谷歌搜索 但找不到 php 内置函数时间和空间复杂度的列表 我有回文字谜 https stackoverflow com questions 4628386 what is the best algorithm t

随机推荐