time-complexity相关内容
我有 2 个整数列表, l1 = new ArrayList();l2 = new ArrayList(); 我想找出它们两个中重复的项目,我有我常用的方法:- for (Integer i : l1){if(l2.contains(i)){System.out.println("找到了!");}} 我听说 contains() 是 O(n),使我的实现成为 O(n^2). 有没有更
..
这个问题基本上说明了一切.假设我有一个(排序的)列表,可以包含 1K 到 1M 的任何项目.我有一个 starting index 和一个 ending index.如果我使用 ArrayList.sublist(start, end) 方法,时间复杂度是 O(n) 还是 O(1)?我确实在这里检查了答案,因为我认为这是一个常见问题,但是虽然我找到了 LinkedList 的重复答案,但我找不到关
..
为什么 ArrayList add() 和 add(int index, E) 的复杂度是摊销常数时间? 为什么不是 O(1) 用于单个 add() 操作,O(n) 用于单个 add(int index, E) 操作和 O(n) 用于添加 n 个元素(n add 操作)使用(任何)添加方法?假设我们很少使用 add(int index, E) 添加到数组末尾? 不是已经有 n 个元素的
..
正如标题所说,我想知道 contains() 一个ArrayList 是. 解决方案 O(n) size、isEmpty、get、set、iterator 和listIterator 操作以恒定时间运行.add 操作在分摊的常数时间中运行,即添加 n 个元素需要 O(n) 时间.所有其他操作都在线性时间内运行(粗略地说).与 LinkedList 实现相比,常量因子较低. http
..
ArrayList 在java中是数组还是列表?get操作的时间复杂度是多少,是O(n)还是O(1)? 解决方案 Java 中的 ArrayList 是由 arrayList>. get(index) 方法是一个常数时间,O(1),操作. ArrayList.get(index) 的直接出自 Java 库的代码: public E get(int index) {范围检查(索
..
输入:两个 n 位整数 x 和 y,其中 x ≥ 0,y ≥ 1.输出: x 除以 y 的商和余数.如果 x = 0,则返回 (q, r) := (0, 0);q := 0;r := x;而 (r ≥ y) 做{ q := q + 1;r := r – y};返回(q,r); 我已经获得了 O(n^2) 的大 O 复杂度,但朋友说它是 O(2^n),其中 n 是作为输入大小的位数 请给出解
..
输入:两个 n 位整数 x 和 y,其中 y ≥ 1. 输出:x 除以 y 的商和余数. 如果 x = 0,则返回 (q, r) := (0, 0);q := 0;r := x;while (r ≥ y) do//在最坏的情况下进行 n 次迭代.{q := q + 1;r := r – y};//每个 r – y 的 O(n),其中 y 是 n 位长.返回(q,r); 对于上面的算法主要
..
我正在尝试学习算法分析,但我对渐近符号(big O...)和cases(最佳、最差和平均)之间的关系感到困惑. 我了解到 Big O 符号定义了算法的上限,即它定义了函数的增长不能超过其上限. 起初对我来说听起来是因为它计算了最坏的情况.我在谷歌上搜索(为什么最坏的情况不是大 O?),并得到了很多对初学者来说不太容易理解的答案. 我总结如下:Big O 并不总是用来表示算法的最坏
..
我有一组无序的 n 个唯一的正整数.我想将它划分为 ceil(n/k) 最多 k 个数字(k )的无序集合确定性方式(我想获得一系列相同的 ceil(n/k) 输出集,而不依赖于输入的固定顺序). 有没有一种方法可以在对集合进行排序和对结果序列进行分区方面具有更高的算法复杂度? 解决方案 这是一种平均性能为 O(n) 的方法,它击败了 O(n log(n)). 选择 m 和 r
..
我正在计算这样的 kruskal 算法的时间复杂度(请参阅附图中的算法) T(n) = O(1) + O(V) + O(E log E) + O(V log V)= O(E log E) + O(V log V)如 |E|>= |V|- 1T(n) = E log E + E log E= E 日志 E CLRS 算法: 这是正确的还是我做错了什么,请告诉. 解决方案 Krusk
..
给定以下数组A,我们需要计算XOR和X的子数组总数,该子数组应满足条件(X+1)=(X^1).这是我的解决方案, def getTotalXorOfSubarrayXors(arr, N):X = 0计数 = 0对于范围(0,N)中的我:对于范围内的 j (i, N):对于范围内的 k(i, j + 1):X = X ^ arr[k]如果 X+1 == X^1:计数 +=1X = 0返回计数ar
..
这段代码将 a[i,j] 与 a[j,i] 交换为 j > 的时间复杂度是多少?i(转置给定矩阵): for(i=1;i 解决方案 内循环做从 n 到 1 递减的工作,实际完成的工作(交换数字)是 O(1),所以: n 次运算 + (n - 1) 次运算 + (n - 2) 次运算 + ... + 2 次运算 + 1 次运算 = sum(1, n) 运算 = (n * (n + 1))
..
JavaScript 中 charAt() 函数相对于字符串长度的运行时复杂度是多少?它是在 EcmaScript 中定义的吗(我没找到)?如果不是,那么常见浏览器的行为是什么? 解决方案 这是一个小实验:我生成不同长度的文本并执行 charAt 一百万次. function repeat(text, n) {const randomPositions = [];for (让 i = 0
..
因此,我的 comp sci 课程中的主题之一是关于时间复杂度,并使用数组和链表作为比较某些操作的好方法以及哪种容器更擅长这样做,因此您可以选择合适的数据结构.我了解大多数操作背后的原因,但我不确定其中一个是在数组中插入和追加. 这两种情况的最坏情况是 O(n).我相信我理解为什么插入是 O(n) 因为最坏的情况是,你在前面插入导致你将所有元素向右移动,这意味着它是线性的并且依赖于数组中的元
..
我写了 heapsort (Cormen).算法排序正确,但复杂度高于预期. void heap_sort(int tab[], int length){build_max_heap(标签,长度);int heap_size = 长度;for (int i = length-1; i > 1; i--){int tmp = tab[1];选项卡[1] = 选项卡[i];tab[i] = tmp;
..
以下操作的计算复杂度是多少: list1 = [1,2,2,2,3,4,4]set1 = 设置(列表) 解决方案 它是 O(n),其中 n 是列表中元素的数量.set() 本质上是遍历列表并将这些元素中的每一个添加到哈希表中.
..
我一直在尝试用 Java 编写一个简单的程序来查找程序的时间复杂度.该程序只搜索“for"循环或“while"循环并打印迭代次数,例如 O(n)或 O(2n) 等 我在 textarea 中得到了 i/p 程序.有什么方法可以进行操作吗? 请任何人帮助我. 解决方案 这不是完整的证据,但对你有用 import java.util.StringTokenizer;公共类复杂性{
..
很明显,while (i
..
我编写了一个函数来显示特定数字 n 的质数和因数. bool PrimeFactor(int n){int count = 0;//计算除数for (int i = 2 ; i 0)//不是素数返回假;返回真;} 结果可能会在某些地方重复,但这
..
我在这里有一个 compare 函数,它比较 2 个 4 位数字(非重复数字)并给出 x(n1 和 n2 并在同一位置)和 y(n1 和 n2,但在不同的位置).我所做的是使用 for 循环将数字存储为 results 字典的键,并将相应位置存储为 results 的值> 字典.然后,我使用另一个 for 循环遍历字典,得到 x 和 y.有没有办法降低这个函数的时间复杂度? def compar
..