24得票2回答
内存受限的硬币找零问题,适用于小于十亿的数字

我在一次培训中遇到了这个问题。我们有N个不同的值(N<= 100)。我们把这个数组称为A[N],对于这个数组A,我们确定其中有一个1,而且A[i] ≤ 109。其次,我们给出了数字S,其中S ≤ 109。 现在我们需要使用这些值来解决经典的硬币问题。实际上,我们需要找到最少...

22得票16回答
在线性时间和常量空间内,找到一个整数数组中第一个缺失的正整数。

换句话说,找到数组中不存在的最小正整数。数组可以包含重复项和负数。 Stripe在其编程面试中提出了这个问题。我已经为此设计了以下解决方案:#include<bits/stdc++.h> using namespace std; int main(){ int arr[]...

22得票1回答
PHP内置函数复杂度(isAnagramOfPalindrome函数)

我已经在谷歌上搜索了过去2个小时,但无法找到一个PHP内置函数时间和空间复杂度的列表。我需要解决 isAnagramOfPalindrome 问题,并要求最大允许复杂度为:expected worst-case time complexity is O(N) expected worst-c...

20得票2回答
如何计算函数的空间复杂度?

我明白了一个基本的概念,如果我有这样一个函数:int sum(int x, int y, int z) { int r = x + y + z; return r; } 对于函数的参数需要3个空间单元,局部变量需要1个,这个值不会改变,因此这是O(1)。但是如果我有这样一个函数:voi...

19得票2回答
为什么中位数算法被描述为使用O(1)辅助空间?

维基百科将中位数算法列为需要O(1)辅助空间。 然而,在算法的中间,我们对一个大小为n/5的子数组进行递归调用以查找中位数。当递归调用返回后,我们使用返回的中位数作为枢轴来分割数组。 这个算法是否会因为递归而将O(lg n)激活记录推入运行时堆栈?据我所见,这些递归调用以查找连续的中位数似...

19得票2回答
如何计算递归函数(例如此函数)的空间复杂度?

f (int n){ if (n<=0){ return 1; } return f(n-1) + f(n-1); } 假设我们执行了f(4)。我认为它的时间复杂度是O(2^n),因为为了计算f(n-1)+f(n-1),我们需要将f(n-1)=f(...

18得票2回答
这是一个问题标题: 快速排序算法是否是原地排序?

快速排序通常被描述为一种就地(in-place)算法,尽管它需要O(log n)的堆栈空间。那么,就地是指“需要少于O(n)的额外空间”,还是堆栈空间通常不计入空间复杂度(但为什么会这样呢?),或者说快速排序实际上不是一种就地算法?

17得票6回答
如何将空间复杂度降至O(1)

我试图回答以下问题:给定一个整数数组,其中每个整数出现次数都是奇数,除了其中的3个数字。请找出这三个数字。 到目前为止,我想到了暴力方法: public static void main(String[] args) { // TODO Auto-generated method s...

17得票2回答
后缀数组 vs 后缀树

我只是想知道,在何时后缀树比增强型后缀数组更优。 在阅读了Replacing suffix trees with enhanced suffix arrays之后,我不再看到使用后缀树的理由。有些方法可能会变得复杂,但你可以用一个后缀数组做到与使用后缀树相同的操作,且时间复杂度相同但占用更少的内...

17得票5回答
微软面试:矩阵转换

给定一个大小为n x m的由0和1填充的矩阵,如果矩阵中(i,j)位置为1,则将第j列和第i行都填充为1。要求时间复杂度为O(n*m),空间复杂度为O(1),注意不能在矩阵条目中存储除0或1以外的任何内容。public class MatrixTransformer { privat...