关闭

[LeetCode 136] Single Number

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

题目内容

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?
题目来源

题目简述

在数组中找出唯一一个不成对的数。

题目分析

由于题目要求用线性时间且不用额外空间解决问题,所以只能用一次遍历,而且只能使用常数存储空间。所以对每个元素使用异或运算,相同元素的运算结果为0,其他元素与0进行异或运算结果不变。所以遍历整个数组后运算结果即为唯一的不同元素。

代码示例

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        if(nums.empty())
        return -1;
        int result=nums[0];
        int n=nums.size();
        for(int i=1;i!=n;i++)
        result=result^nums[i];
        return result;
    }
};
0
0

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