小编Kob*_*chi的帖子

查找所有其他元素出现两次的数组中出现一次的元素(不使用 XOR)

我已经尝试解决这个问题很久了,但我似乎无法解决。
问题如下:

给定一个数组 n 个数字,其中所有数字都出现两次,除了一个只出现一次,找出只出现一次的数字。

现在,我在网上找到了很多解决方案,但没有一个满足问题的额外限制。
解决方案应该:

  • 以线性时间运行(又名 O(n))。
  • 不使用哈希表。
  • 假设计算机只支持比较和算术(加、减、乘、除)。
  • 数组中每个数字的位数约为 O(log(n))。

因此,使用 XOR 运算符尝试类似/sf/answers/334079791/的操作是不可能的,因为我们没有 XOR 运算符。由于每个数字的位数大约为 O(log(n)),尝试使用普通算术(逐位)实现 XOR 运算符将需要大约 O(log(n)) 个动作,这将给我们一个整体O(nlog(n)) 的解。

我最接近解决它的是,如果我有办法在线性时间内获得数组中所有唯一值的总和,我可以从总和中减去该总和的两倍以获得(负)仅出现一次的元素的,因为如果出现两次的数字是{A1,A2,...,AK},而出现一次的数量为x时,则整体的总和为
总和= 2(A1 + ... + AK)+ X
就据我所知,集合是使用哈希表实现的,因此使用它们来查找所有唯一值的总和是不好的。

arrays algorithm big-o bit-manipulation time-complexity

4
推荐指数
1
解决办法
161
查看次数

打开wamp服务器时出错,应用程序无法正常启动(0xc0000142)

我最近打开了Wamp服务器很长一段时间后我没碰到它.当时很好,但是当我现在尝试打开W​​amp服务器时,我收到一条错误消息

应用程序无法正确启动(0xc0000142).

此外,wamp图标为橙色,而当时则为绿色.

我试图在互联网上搜索解决方案,但我无法找到.

我还注意到,当我尝试打开phpMyAdmin时,该页面显示

#2002 - 无法建立连接,因为目标计算机主动拒绝它.服务器没有响应(或未正确配置本地服务器的套接字)

但是我可以打开我的localhost开始页面(带有加载的扩展列表的页面).

谢谢你的帮助.

wamp

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

删除类中的char指针会使控制台卡住

我尝试将我自己的字符串类用于学习目的,但我遇到了一个小问题.

我在我的String类中创建了一个char指针成员(并且堆在构造函数中分配了它).我也在解构器中删除了[]它,我注意到在试图退出main方法后控制台卡住了.

#include <iostream>
class String {
    char *str;
public:
    String() {}
    String(const char *s) {
        size_t len = strlen(s);
        str = new char[len];
        for (size_t i = 0; i < len; i++)
            str[i] = s[i];
        str[len] = '\0'; // null terminate
    }
    ~String() { delete[] str; }
};

int main() {
    String s("12");
} // <-- Program gets stuck here while trying to exit. Notice that when
  // I remove the delete[] in the deconstructor, the program runs fine. …
Run Code Online (Sandbox Code Playgroud)

c++

2
推荐指数
1
解决办法
56
查看次数