【[Java高级](三)时间复杂度计算】教程文章相关的互联网学习教程文章

在Java中使用HashSets时,方法retainAll的时间和空间复杂度是多少?【代码】

例如,在下面的代码中:public int commonTwo(String[] a, String[] b) {Set common = new HashSet<String>(Arrays.asList(a));common.retainAll(new HashSet<String>(Arrays.asList(b)));return common.size(); } 解决方法:让我们在the code处进行细读.方法retainAll继承自AbstractCollection,并且(至少在OpenJDK中)如下所示:public boolean retainAll(Collection<?> c) {boolean modified = false;Iterator<E> it = iterator();w...

Java集合时间复杂度

ListArrayList LinkedListArraylist 可增长的数组长度 查询快 get() set() 常数级插入和现有所有项的删除代价昂贵 除非在表的末端 ArrayList 是线性表(数组)get() 直接读取第几个下标,复杂度 O(1)add(E) 添加元素,直接在后面添加,复杂度O(1)add(index, E) 添加元素,在第几个元素后面插入,后面的元素需要向后移动,复杂度O(n)remove()删除元素,后面的元素需要逐个移动,复杂度O(n) 总结:查 O(1) 增 末尾0(1...

这段代码的时间复杂度o()是多少? java的【代码】

我认为是O(3 ^ n),任何想法? 此方法查找给定数字是否是给定集合的任何子集合的总和(overoads boolean isSumOf(int [] s,int n)). 如果taget等于0或者消耗集合中的当前数字(或不消耗)并再次尝试,则该方法在每次递归调用中都会查询, 目标> 0,而我们还没有耗尽阵列.* @param set a given set of natural numbers.* @param target the number. * @param i where we are in the set.* @return true if we reached target, ...

java – 根据步数确定时间复杂度【代码】

类文件中有四种不同的算法,它们具有一定的时间复杂度.下面的输出是给定随机数据的数组大小n的每种排序所采取的步骤数.我可以获得一些关于如何确定时间复杂性的帮助吗?如果其中一种具有n ^ 2的时间复杂度,我很确定我必须采用步数并除以n ^ 2并查看它接近的数字,但我不知道该怎么做之后.希望我的问题不是太宽泛. 谢谢!The array size is 100 Number of steps for Sort 1: 2543 Number of steps for Sort 2: 813 ...

java – 如何减少铲斗装填程序的时间复杂度?

我正在解决一个问题,该问题表明: 连续有n个桶.一个园丁给水桶浇水.每天他都会在i和j(包括)位置之间挖掘水桶.他为不同的i和j做了t天. 假设最初零体积,输出桶中水的体积,每次浇水使体积增加1. 输入:第一行包含t和n由空格分隔.接下来的t行包含i和j,用空格分隔. 输出:单行显示由空格分隔的n个桶中的体积. 例: 输入: 2 21 11 2 输出: 2 1 约束: 0 <= t <= 104; 1< = n< = 105我试过这个问题.但我使用O(n * t)算法.每次在每一步时...

java – 数组的查找时间复杂度与存储方式的关系

众所周知,索引对数组访问的时间复杂度为O(1). Java的ArrayList文档由数组支持,它的get操作也是如此:The size, isEmpty, get, set, iterator, and listIterator operations run in constant time.通过在给定索引处获取元素的内存地址而不依赖于数组的大小(类似于start_address element_size * index)来完成查找.我的理解是数组的元素必须在内存中彼此相邻存储,以便这种查找机制成为可能. 但是,从this question开始,我知道Java中的数...

java – Priority Queue poll()时间复杂度【代码】

鉴于以下代码:pq.offer(x); pq.poll();对于第一行代码,元素x被插入到优先级队列pq中,商品的时间复杂度是log(k),其中k是pq的大小. 那么我的问题是,对于紧跟在第一行之后的第二行代码,poll()的时间复杂度是多少? 在第一行提供之后,pq已经被排序了,所以poll只是检索并删除队列的头部,那么我认为它应该是O(1),对吗? 谢谢解决方法:根据PriorityQueue#poll的源代码,似乎操作是O(log n):@SuppressWarnings("unchecked") public E poll...

java – e ^ x函数的时间复杂度【代码】

在CS中,我们必须模拟一个HP 35计算器,所以我查找了e ^ x的总和[在这种情况下,’^’表示“对于权力”].公式为和n = 0到无穷大((x ^ n)/(n!)) 在我的实现中,第一个for循环是求和循环:1 x x ^ 2/2! x ^ 3/3! …,第二个for循环用于单独乘以x项,以便不溢出双精度:…(x / 3)*(x / 2)*(x / 1)… 关于时间复杂度,第一个for循环仅用于确保必要的精度,但第二个for循环用于乘以项.这两个循环都不受x大小的直接影响,所以我不知道如何计算这...

用于计算圈复杂度的Java工具

我需要一个工具,允许我计算给定类的方法的圈复杂度.另外,我需要从Linux命令行做这件事.到目前为止,我读过有关Source Monitor,Gmetrics和Sonar的信息,但据我所知,这些工具并未提供命令行使用. 谢谢!解决方法:Checkstyle计算圈复杂度指标,你可以运行它from command line. 静态代码分析的另一个很棒的工具是PMD,它也可以用于from the console.

java – 为什么嵌套循环与list.add给出O(n ^ 4)时间复杂度?【代码】

我遇到了这个代码片段的Big O时间复杂度的问题:保证以下代码的时间复杂度为O(n ^ 4).ArrayList<Integer> list = new ArrayList<Integer>();for(int i = n; i>=1; i--) //n for(int j = 1; j<=i; j++) //n if(!list.contains(i*j)) //n? list.add(i*j); //1?我的问题:为什么是O(n ^ 4)而不是O(n ^ 3)?解决方法:list有大约n ^ 2/2个条目[*],所以查找list.contains(i * j)是O(n ^ 2)而不是O(n...

java – 如何计算算法的时间和空间复杂度

如何计算java中算法的空间和时间复杂度. 执行的总时间[使用System.nanoTime()]是否等于任何算法或函数的时间复杂度? 示例:斐波纳契数列中第n个数的空间和时间复杂度估计解决方法:时间复杂度是理想化机器上可扩展性的理论指示. (关于算法,而不是机器) System.nanoTime()将告诉您特定机器在特定数据输入的特定状态下花了多长时间. 时间复杂度对于计算最坏情况值更好,如果您有特定的用例需要考虑,则测量更有用.

Java StringTokenizer.countTokens()的时间复杂度是多少【代码】

我希望它具有恒定的时间复杂性,但名称暗示它实际上是在计算令牌.解决方法:如果你很好奇,这是实施:public int countTokens() {int count = 0;int currpos = currentPosition;while (currpos < maxPosition) {currpos = skipDelimiters(currpos);if (currpos >= maxPosition)break;currpos = scanToken(currpos);count++;}return count; }我对StringTokenizer并不太熟悉,但假设maxPosition可以改变(它看起来可以),那么它不是常数时间...

什么应该是JAVA的圈复杂度范围【代码】

我想知道应该是标准范围的圈复杂度? 是否取决于语言或平台,或者它对所有人来说都是常见的? 我正在使用State of Flow – EclipseMetrics这是一个Eclipse插件,可以在构建周期中为您的代码计算各种指标,并通过Problems视图警告您每个指标的“范围违规”.解决方法:我已经提到过这个链接 – http://www.javaworld.com/community/node/1005Cyclocmatic complexity = Number of decision points + 1决策点可能是你的条件语句,如if,if...

java – 如何计算此解决方案的时间和空间复杂度?【代码】

我正在解决leetcode上的this问题.无法弄清楚我的解决方案的时间和空间复杂性. 特别是,在我们有FOR循环的情况下,我无法理解如何应用Master Theorem.什么是a和b在这里?由于输入分为多次并且针对不同大小的子问题.另一个复杂因素是记忆.class Solution {private Map<String, List<Integer>> cache = new HashMap<>();public List<Integer> diffWaysToCompute(String equation) {if (cache.containsKey(equation)) return cache.get(e...

java – 如何使用O(n)空间复杂度构建此树?【代码】

问题 给定一组整数,找到总和为100,000,000的整数的子集. 解 我正在尝试构建一个包含给定集合的所有组合以及总和的树.例如,如果给定的集看起来像0,1,2,我将构建以下树,检查每个节点的总和:{}{} {0}{} {1} {0} {0,1} {} {2} {1} {1,2} {0} {2} {0,1} {0,1,2}由于我在每个节点都保留了整数数组和总和,因此我只需要内存中树的底部(当前)级别. 问题 我当前的实现将整个树保留...