Leetcode 上一道简单题的效率问题

2015-11-05 14:36:35 +08:00
 firemiles

Single Number

Given an array of integers, every element appears twice except for one. Find that single one.

Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

Subscribe to see which companies asked this question

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int ret = 0;
         for(int i:nums) {
             ret ^= i;
         }
         return ret;
    }
};

上 leetcode 做了一道题,怎么也想不明白为什么这个写法效率这么低,效率最高的那部分代码要怎么写才能达到?

2592 次点击
所在节点    问与答
7 条回复
msg7086
2015-11-05 14:41:06 +08:00
这么低?怎么低?
iEverX
2015-11-05 15:00:48 +08:00
这是最快了吧?
firemiles
2015-11-05 15:37:23 +08:00
MntCw
2015-11-05 15:40:26 +08:00
int ret = nums[0]
sleeperqp
2015-11-05 15:53:14 +08:00
额 你用你代码重新提交一下试试 ╭(╯^╰)╮ 有可能是 20ms 这种东西不要深究
firemiles
2015-11-05 17:20:56 +08:00
@sleeperqp
```cpp
class Solution {
public:
int singleNumber(vector<int>& nums) {
int ret = nums[0];
int len = nums.size();
for(int i=1; i<len; ++i) {
ret ^= nums[i];
}
return ret;
}
};
```
反复提交后终于到了第一梯队,看来还是 leetcode 的测试案例太少,运行时间太少导致排名不稳定
sleeperqp
2015-11-05 22:03:53 +08:00
@firemiles 也不一定 这个还可能跟运行时服务器的运行负载有关 0 0
所以这个大概知道怎么做就最好了 除非有很大的运行时间差距

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/233845

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX