当前位置: 首页 > 面试题库 >

代码复杂度

寿子默
2023-03-14
问题内容

只有一个循环的程序的复杂度是多少?有人可以给我一些有关估算代码复杂度的想法吗?


问题答案:

好吧,这确实取决于该循环中发生的事情。

这个循环是线性时间,即O(n):

int sum = 0;
foreach( int i in SomeCollection )
{
    sum += i;
}

但是,请考虑一个在每次迭代期间执行子字符串搜索的循环。现在,您必须考虑字符串搜索算法的复杂性。目前的问题无法回答。如果您想获得有意义的答案,则需要提供代码示例。



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

  • 我被赋予以下任务: 给出了-2个列表。第一个列表的大小为N1,第二个列表的尺寸为N2。每个列表的元素不相同。编写一段代码,用第一个和第二个列表中的元素创建一个新列表。此列表也不应有相同的元素。还要估计代码的复杂性。 我编写了以下代码: 并假设 getNewList 方法的执行时间与 N1*N2 成正比。在回复中,我收到以下内容,没有任何解释 - “你错了,这段代码的复杂性不是 N1*N2”。 那么

  • 测量代码是否冗长的工具和度量 只是从远处看一眼乱七八糟四处蔓延的代码块,开发人员就会感到心惊肉跳 —— 这很正常!冗长的代码常常是复杂性的标志,会导致代码难以测试和维护。本月将学习三种测试代码复杂性的重要方法,它们分别基于方法长度、类长度和内部类耦合。在这一期的 追求代码质量 系列文章中,专家 Andrew Glover 将向您展示如何使用诸如 PMD 和 JavaNCSS 之类的工具,在您需要的

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

  • 我知道,对于迭代,递增。

  • null null T(n)=O(1)+O(nlogn)=O(nlogn) 但我不确定。有人能帮帮我吗。

  • 问题内容: 虽然圈复杂度是一个值得衡量的指标,但我倾向于发现它并不是识别难以维护的代码的有效工具。特别是,我倾向于发现它只是突出显示了某些类型的代码(例如解析器),并且错过了困难的递归,线程和耦合问题以及许多已定义的反模式。 还有哪些其他工具可用来识别有问题的Java代码? 注意,我们已经使用了PMD和FindBugs,我认为它们对于方法级问题的识别非常有用。 问题答案: 我的经验是,查看代码可维

  • 以下代码是竞赛中问题陈述的解决方案。给出的时间限制为1s。该代码在5/7个测试用例中正常工作。对于其他情况,超过了时间限制。如何降低下面代码的时间复杂度? 编辑:问题陈述被定义为返回数字n的值或n/2、n/3、n/4之和,以最大值为准。例如,如果输入为24,则可以进一步减少或交换为12 8 6=26,12可以减少为6 4 3=13。8和6不应减少,因为这可能会降低值。最后的答案是13 8 6=27