136. 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?


题意:

给定一个整数数组,除了其中一个元素只出现一次之外,其他每一个元素都出现两次。

note:

算法要求不使用额外的空间实现线性时间复杂度。


思路一:

直接轮训数组,将数组的每个元素做异或操作,结果即为single number。

代码:20ms

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        
        int result = nums[0];
        for(int i=1; i<nums.size(); i++){
            result ^= nums[i];
        }
        
        return result;
    }
};
代码:20ms

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        
        for(int i=1; i<nums.size(); i++){
            nums[0] ^= nums[i];
        }
        
        return nums[0];
    }
};
代码:20ms

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        
        return nums.size() == 0 ? 0 : accumulate(nums.begin(), nums.end(), 0, bit_xor<int>());
    }
};

阅读更多
上一篇94. Binary Tree Inorder Traversal
下一篇347. Top K Frequent Elements
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭