小编Luv*_*Luv的帖子

从整数流中查找运行中位数

可能重复:
C中的滚动中值算法

鉴于从数据流中读取整数.到目前为止,以有效的方式查找元素的中位数.

解决方案我已经读过:我们可以使用左侧的最大堆来表示小于有效中位数的元素,在右侧使用最小堆来表示大于有效中位数的元素.

在处理传入元素之后,堆中元素的数量最多相差1个元素.当两个堆包含相同数量的元素时,我们发现堆的根数据的平均值为有效中值.当堆不平衡时,我们从包含更多元素的堆的根中选择有效中值.

但是我们如何构建最大堆和最小堆,即我们如何知道这里的有效中位数呢?我认为我们会在max-heap中插入1个元素,然后在min-heap中插入下一个元素,依此类推所有元素.纠正我如果我错在这里.

algorithm heap median

219
推荐指数
7
解决办法
15万
查看次数

查找未排序数组的中位数

为了找到未排序数组的中位数,我们可以在O(nlogn)时间内为n个元素创建一个最小堆,然后我们可以逐个提取n/2个元素来获得中值.但这种方法需要O(nlogn)时间.

我们可以在O(n)时间内通过某种方法做同样的事情吗?如果可以的话,请告诉或建议一些方法.

algorithm heap median

46
推荐指数
4
解决办法
10万
查看次数

在C++中删除malloc的行为

int *p=(int * )malloc(sizeof(int));

delete p;
Run Code Online (Sandbox Code Playgroud)

当我们使用malloc分配内存时,我们应该使用free释放它,当我们在C++中使用new分配时,我们应该使用delete释放它.

但是如果我们使用malloc分配内存然后使用delete,那么应该会有一些错误.但是在上面的代码中,C++中没有错误或警告.

此外,如果我们使用new进行反向和分配并使用free进行释放,那么也没有错误或警告.

为什么会这样?

c++ malloc delete-operator

27
推荐指数
3
解决办法
2万
查看次数

动态加载和动态链接之间的区别?

在调用例程之前不会加载例程.所有例程都以可重新定位的加载格式保存在磁盘上.主程序被加载到内存中并被执行.这称为动态链接.

为什么这称为动态链接?不应该是动态加载,因为在动态加载中调用Routine之前不会加载,因为在动态链接中,链接推迟到执行时间.

linker operating-system loading dynamic

22
推荐指数
4
解决办法
6万
查看次数

在数组中找到一个非重复元素?

我有一个n元素数组,其中只有一个元素不重复,否则所有其他数字重复> 1次.并且对阵列中的数字范围没有限制.

一些解决方案是:

  • 利用散列,但这会导致线性时间复杂度,但空间复杂度非常差
  • 使用MergeSort 对列表进行排序O(nlogn),然后找到不重复的元素

有更好的解决方案吗?

arrays algorithm time-complexity

11
推荐指数
1
解决办法
3110
查看次数

找到最大数量.图中的边缘

无向图有'n'个顶点和0个边.我们可以绘制的最大边数可以使图形保持断开状态.

我已经做出了解决方案,我们可以排除一个顶点,并且可以找到无向图的n-1个顶点之间的最大边数,这样图形仍然保持断开状态.n个顶点为n(n-1)/ 2,n-1个顶点为(n-1)(n-2)/ 2可以有更好的解吗?

algorithm graph edge-detection

8
推荐指数
2
解决办法
5473
查看次数

找到阵列中第N个最常见的数字

Find the nth most frequent number in array.
(There is no limit on the range of the numbers)
Run Code Online (Sandbox Code Playgroud)

我想我们可以

(i)使用C++中的地图存储每个元素的出现

(ii)在元素的出现(或频率)的线性时间内构建最大堆,然后提取到第N个元素,每次提取需要log(n)时间来进行堆积.

(iii)我们将获得第N个最常见数字的频率

(iv)然后我们可以通过哈希进行线性搜索,找到具有该频率的元素.

时间 - O(NlogN)空间 - O(N)

有没有更好的方法?

algorithm frequency

7
推荐指数
2
解决办法
9029
查看次数

计算长度为4的子序列可被9整除

计算长度为n的字符串长度为4的子序列,可以被9整除.

例如,如果输入字符串是9999,则cnt = 1

我的方法与Brute Force类似,需要O(n ^ 3).比这更好的方法?

algorithm division

7
推荐指数
1
解决办法
1482
查看次数

多重继承:虚拟指针的类大小?

鉴于代码:

class A{};

class B : public virtual A{};

class C : public virtual A{};

class D : public B,public C{};

int main(){
cout<<"sizeof(D)"<<sizeof(D);
return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:sizeof(D)8

每个类都包含它自己的虚拟指针,而不是它的任何基类,那么,为什么类(D)的大小是8?

c++ multiple-inheritance

6
推荐指数
1
解决办法
2141
查看次数

同一个类中的类的静态成员对象

假设我们有一个班级

class Egg
{
    static Egg e;
    int i;
    Egg(int ii):i(ii) {}
    Egg(const Egg &);    //Prevents copy-constructor to be called
  public:
    static Egg* instance() {return &e}
};

Egg Egg::e(47);
Run Code Online (Sandbox Code Playgroud)

此代码保证我们不能创建任何对象,但只能使用静态对象.但是我们如何在类中声明同一个类的静态对象.

还有一件事因为e是静态对象,静态对象只能调用静态成员函数,所以如何在静态对象e中调用构造函数,其构造函数也是私有的.

c++ static constructor

6
推荐指数
1
解决办法
5440
查看次数