当前位置: 首页 > 知识库问答 >
问题:

这个伪代码的时间复杂度是多少?

郜振国
2023-03-14
n + n/3 + n/9 + ... 
j = n
while j >= 1 {
    for i = 1 to j {
        x += 1
    }
    j /= 3
}

共有1个答案

詹夕
2023-03-14

该算法将以以下方式运行:

n+n/3+n/9+...=级数~=O(3/2*n)=O(n)

因为3/2是常数。这里,第k个循环将以n/3k步骤运行。

 类似资料:
  • 我正在尝试分析一个算法的时间复杂度。 下面的算法旨在只检查数组的一部分,所以如果它没有多大意义,请不要担心。 我对计算循环周围的时间复杂度很困惑,请看看我的评论。 这是否意味着我们有: T(N) = (C2 C4 C5)N (C1 C3 C6) T(N) = C7*N (C8) T(N)=N?? 循环中的所有内容都是*N? 先谢谢!

  • 由于std::sort的时间复杂度为nlog(n),我们有(N1+N2....Nk)次迭代,因此我假设总的时间复杂度为O((N1+N2....+Nk)klog(k))。但是在每次迭代中,vector的大小可能会有所不同,所以我有点困惑。有人能证实这一点吗? 2.我还在leetcode论坛上看到了另一个使用“合并排序”思想的解决方案。它每次都合并两个链表。 我想知道这个解决方案的时间复杂度是多少?因

  • 有人能帮我了解一下这个代码片段的时间和空间复杂性吗?请参考leetcode问题-单词中断II。给定一个非空字符串s和一个包含非空单词列表的字典单词dict,在s中添加空格来构造一个句子,其中每个单词都是有效的字典单词。返回所有这些可能的句子。

  • 我不能像下面的例子那样分析自顶向下动态规划方法的时间复杂性。你能帮帮我吗? 问题:给定一个字符串s和一个字符串字典wordDict,如果s可以被分割成一个或多个字典单词的空格分隔序列,则返回true。注意,词典中的同一个词可能在切分中被重复使用多次。 输入:, 输出: 输入:, 输出:

  • Leetcode问题https://leetcode.com/problems/count-binary-substrings/ 该解决方案有效,但我很难提出递归解决方案的时间复杂度。 每当循环遇到s.charAt(i)!=s.charAt(i 1)时,它都会进行递归调用以展开,直到达到基本大小写或其他部分。 因为我遍历整个字符串,所以for循环是O(n)。但是如何确定将进行的递归调用的数量,因为

  • 考虑到招聘过程中的一些问题,一个问题是在Java中从给定字符串中找到第一个非重复字符。下面是两个示例代码,其中第一个能够通过所有测试用例,但由于时间复杂性,第二个在少数测试用例中失败。由于我对算法和复杂性分析比较陌生,有人能帮我理解这两个代码的时间复杂性是否不同以及如何不同吗? 示例代码1: 示例代码2: