Fork me on GitHub

Leetcode137. Single Number II只出现一次的数字2

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。

说明:

你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

示例 1:

输入: [2,2,3,2] 输出: 3

示例 2:

输入: [0,1,0,1,0,1,99] 输出: 99

 

 

class Solution {
public:
    int singleNumber(vector<int>& nums) 
    {
        sort(nums.begin(), nums.end());
        for(int i = 1; i < nums.size() - 1; i++)
        {
            if((nums[i] ^ nums[i - 1]) == 0 && (nums[i] ^ nums[i + 1]) == 0)
            {
                i = i + 2;
            }
            else
            {
                return ((nums[i - 1] ^ nums[i]) ^ nums[i + 1]);
            }
        }
        return nums[nums.size() - 1];
    }
};

 

posted @ 2018-11-27 22:14  lMonster81  阅读(103)  评论(0编辑  收藏  举报
/*评论*/ /*top按钮*/

/* 网易云控件 */