time-complexity 相关问题

算法的时间复杂度量化算法运行所花费的时间量,作为问题输入大小的函数。算法的时间复杂度通常使用大O表示法表示,其抑制乘法常数和低阶项。

最佳索引 - HackerEarth 解决方案,帮我优化代码

问题链接:https://www.hackerearth.com/practice/basic-programming/input-output/basics-of-input-output/practice-problems/algorithm/best-index-1-45a2f8ff/ 这里我用JAVA写了一段代码。 ...

回答 1 投票 0

为什么使用“in”运算符检查可打印字节比使用间隔比较更快?

我试图弄清楚“in”运算符为何比检查值是否在某些间隔范围内提供更好的性能。 为什么第一段代码比第二段慢?

回答 1 投票 0

生成边长和对角线均为整数的长方体:如何提高时间复杂度?

我快速编写了这段代码来测试长方体a、b、c、d、e和f的所有边和对角线是否均为整数。它似乎工作得很好,但它需要太多的时间来获得越来越高的值......

回答 3 投票 0

如何提高这个js脚本的时间复杂度

我快速编写了这段代码来测试长方体a、b、c、d、e和f的所有边和对角线是否均为整数。它似乎工作得很好,但它需要太多的时间来获得越来越高的值......

回答 2 投票 0

这个算法对于两个数组的时间复杂度是多少?

下面代码的时间复杂度是多少? 导入数学 arr1 = [2,3,5,6] arr2 = [1,4,7,8,9,10,21] 对于范围内的 i(len(arr2)): #一些操作 对于范围内的 i(len(arr1)): 对于 j 在范围内(...

回答 1 投票 0

为什么我不能通过乘法计算时间复杂度?

我想得到这个伪代码的时间复杂度: 计数=0; 对于 (i = 1; i < n; i *= 2) for (j = 0; j < i; j++) count++; I thought it was log(n)*log(n), but the answer is l...

回答 1 投票 0

java ArrayList 的时间复杂度

java中ArrayList是数组还是列表? get 操作的时间复杂度是多少,是 O(n) 还是 O(1)?

回答 7 投票 0

属于同一持续时间的元素

给定一个以微秒为单位的排序时间戳向量,我需要确定属于相同持续时间(例如秒)的元素的大小。 我的想法是迭代向量直到最后一个元素......

回答 1 投票 0

时间复杂度Log(n)的排序算法

有没有平均时间复杂度log(n)的排序算法? 示例 [8,2,7,5,0,1] 对给定数组进行排序,时间复杂度为 log(n)

回答 4 投票 0

对计算大O复杂度感到困惑

最近我开始用Python学习数据结构 列表_ = [6, 4, 3, 2, 1, 7] 预期总和结果 = 9 deftwo_pair_sum_using_complement(数组,expected_sum): unique_numbers = set() #...

回答 1 投票 0

求数组的最大反转和

您将获得一个由 n 个整数组成的 0 索引数组 vect。您需要执行以下 2 个操作一次 - 选择索引 i {0, 1, 2, ..., n-1} 并乘以整个前缀段 {0..i}...

回答 1 投票 0

合并K排序列表的时间和空间复杂度

我为提到的问题编写了这个解决方案,由于我对堆不太熟悉,所以我很难找到复杂性,复杂性分析中的任何建议/更正都会有所帮助。 如果...

回答 2 投票 0

Floyd 循环检测的运行时复杂度

根据一些在线资料,我提到Floyd循环检测算法的运行时复杂度是O(n)。 说, p = 慢指针 q = 快速指针 m = 从链表起始点到 fi 的距离...

回答 3 投票 0

如果每个数字连续出现两次,为什么内置的sorted()对于包含降序数字的列表会更慢?

我对四个相似的列表进行了排序。列表 d 始终比其他列表花费更长的时间,而其他列表都花费大约相同的时间: 答:33.5 毫秒 b:33.4 毫秒 c: 36.4 毫秒 d:110.9 毫秒 这是为什么? 测试脚本(在...

回答 1 投票 0

为什么在leetcode中for循环结构条件判断中使用.size()计算数组长度会超时?

这是原来的问题 下面是我的超时代码: 类解决方案{ 民众: int removeElement(向量& nums, int val) { 整数计数=0; for(int i=0;i 下面是我的超时代码: class Solution { public: int removeElement(vector<int>& nums, int val) { int count=0; for(int i=0;i<nums.size();i++){ if(nums[i]==val){ for(int j=i;j+1<nums.size();j++){ nums[j]=nums[j+1]; count+=1; } i--; } } return nums.size()-count; } }; 我尝试用一个变量来记录nums.size()的值,并将其作为for循环结构的条件判断。就成功了。 但是我还是想知道.size()的使用时间以及它的内部代码和时间复杂度。 class Solution { public: int removeElement(vector<int>& nums, int val) { int count=0,size=nums.size(); for(int i=0;i<size;i++){ if(nums[i]==val){ for(int j=i;j+1<size;j++){ nums[j]=nums[j+1]; count+=1; } i--; size--; } } return size; } }; vector::size的时间复杂度是恒定的。但毫不奇怪,调用函数 5000 次 (size()) 或读取变量 5000 次 (size) 会有差异。 实际上你很幸运,测试仅使用大小不超过 100 的向量,因为你的算法效率不高:在最坏的情况下它的时间复杂度为 O(𝑛²)。为了说明这一点,如果输入 nums 有 100 个元素,并且它们都等于给定的 val,那么你的算法将移动 99 个元素,然后是 98 个元素,然后是 97 个,...,所以总共会有1+2+3+..+99 次运动,即 4950 次。 代码挑战中有一个提示:“元素的顺序可能会改变。”。这意味着,您可以从向量(的活动部分)中获取 last 值并用它覆盖该事件,而不是移动 val 出现后出现的所有值。然后减少 size 即可继续。这消除了您拥有的内部循环。 这是这个想法的剧透实现: class Solution { public: int removeElement(vector& nums, int val) { int size = nums.size(); for (int i = 0; i < size; i++) { if (nums[i] == val) { size--; nums[i] = nums[size]; i--; } } return size; } };

回答 1 投票 0

Google 面试问题 - 检查数组的所有子数组是否至少有一个唯一元素

我遇到了一个问题,我了解到这是一个谷歌面试问题。问题是: 如果每个子数组至少包含一个频率为 1 的元素,那么数组就是好的。 设计一个算法来 v...

回答 1 投票 0

这段带有滑动窗口的代码的时间复杂度是多少?

父 for 循环有 On ,而 while 循环有摊销 O n ?意思是我们认为它是O 1?还 最小和最大操作它们将是好的,但在最坏的情况下又会再次打开? 是O(n^3)吗? 左=0

回答 1 投票 0

在线性时间内对具有重复元素的数组(给定其频率)进行排序

假设我们有一个包含 n 个整数的数组,并且我们知道某个整数 x 在数组中出现了 alpha 次。证明或反驳是否存在一种可以在线性时间内对该数组进行排序的算法: S...

回答 1 投票 0

如何从 Big-O 表示法找到运行时间?

当仅给出函数的输入大小和 Big-O 表示法时,我很难理解如何找到函数的准确运行时间。有人可以解释一下如何执行以下操作吗

回答 2 投票 0

求绝对差之和

给定整数数组 A 和 B。对于 B 中的每一项,求与 A 元素的绝对差之和并构建结果数组。 例子: A = [1,2,3] B = [3,2,1,5] **结果 = ** [3,2,3,9]

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.