• 力扣第260题 只出现一次的数字 III


    力扣第260题 只出现一次的数字 III

    给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。

    示例 :

    输入: [1,2,1,3,2,5]
    输出: [3,5]
    注意:

    结果输出的顺序并不重要,对于上面的例子, [5, 3] 也是正确答案。
    你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现?

    class Solution {
        public:
        vector<int> singleNumber(vector<int>& nums) {
            int len = nums.size();
            int res = 0;
            for (int i = 0; i < len; i++)
            {
                res ^= nums[i];
            }
            int spe = 1;
            while (!(spe & res))
                spe <<= 1;
            int value1 = 0;
            int value2 = 0;
            for (int i = 0; i < len; i++)
            {
                if (spe & nums[i])
                {
                    value1 ^= nums[i];
                }
                else
                {
                    value2 ^= nums[i];
                }
            }
    
            return vector<int>({value1, value2});
        }
    
    };
    
  • 相关阅读:
    【转载】CSS的inline、block与inline-block
    MySQL常用语法
    JS模态对话框
    CS3常用属性手记
    画布常用手记
    CSS属性常用手记
    H5试题
    window对象常用手记
    js对象常用手记
    常用DOM对象手记
  • 原文地址:https://www.cnblogs.com/woodjay/p/12398308.html
Copyright © 2020-2023  润新知