firemiles
V2EX  ›  问与答

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

  •  
  •   firemiles · Nov 5, 2015 · 3189 views
    This topic created in 3868 days ago, the information mentioned may be changed or developed.

    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 做了一道题,怎么也想不明白为什么这个写法效率这么低,效率最高的那部分代码要怎么写才能达到?

    7 replies    2015-11-05 22:03:53 +08:00
    msg7086
        1
    msg7086  
       Nov 5, 2015 via Android
    这么低?怎么低?
    iEverX
        2
    iEverX  
       Nov 5, 2015
    这是最快了吧?
    MntCw
        4
    MntCw  
       Nov 5, 2015   ❤️ 1
    int ret = nums[0]
    sleeperqp
        5
    sleeperqp  
       Nov 5, 2015   ❤️ 1
    额 你用你代码重新提交一下试试 ╭(╯^╰)╮ 有可能是 20ms 这种东西不要深究
    firemiles
        6
    firemiles  
    OP
       Nov 5, 2015
    @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
        7
    sleeperqp  
       Nov 5, 2015
    @firemiles 也不一定 这个还可能跟运行时服务器的运行负载有关 0 0
    所以这个大概知道怎么做就最好了 除非有很大的运行时间差距
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5493 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 08:19 · PVG 16:19 · LAX 01:19 · JFK 04:19
    ♥ Do have faith in what you're doing.