您的位置:首页 > 职场人生

LeetCode260——Single Number III精彩解法

2015-10-01 00:02 337 查看
Given an array of numbers 
nums
, in which exactly two elements appear only
once and all the other elements appear exactly twice. Find the two elements that appear only once.

For example:

Given 
nums = [1, 2, 1, 3, 2, 5]
, return 
[3,
5]
.

Note:

The order of the result is not important. So in the above example, 
[5,
3]
 is also correct.
Your algorithm should run in linear runtime complexity. Could you implement it using only constant space complexity?

Credits:

实现:

class Solution {

public:

    vector<int> singleNumber(vector<int>& nums) {

        int ax = 0;

        int a=0, b = 0;

        for (int item : nums) {

            ax ^= item;

        }

        int lastb = (ax & (ax-1)) ^ ax;

        for (int item : nums) {

            if (item & lastb) {

                a ^= item;

            } else {

                b ^= item;

            }

        }

        return vector<int>{a, b};

    }

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Leetcode 面试题