[LeetCode 136] Single Number

题目内容

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;
    }
};
阅读更多
上一篇[LeetCode 278] First Bad Version(二分查找的一个常见注意点)
下一篇[LeetCode 94]Binary Tree Inorder Traversal(迭代法)
想对作者说点什么? 我来说一句

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

关闭
关闭