关闭

136. Single Number

74人阅读 评论(0) 收藏 举报

题目:

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>());
    }
};

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:50117次
    • 积分:923
    • 等级:
    • 排名:千里之外
    • 原创:8篇
    • 转载:242篇
    • 译文:0篇
    • 评论:5条