• alg-查找只出现一次的数


    //只有2个数出现1次,其余的数都出现2次
    class Solution {
    public:
        vector<int> singleNumber(const vector<int>& nums) {
            int diff = accumulate(nums.begin(), nums.end(), 0, bit_xor<int>());
            diff &= -diff;
            vector<int> res(2, 0);
            for (auto &a : nums) {
                if (a & diff) {
                    res[0] ^= a;
                }
                else {
                    res[1] ^= a;
                }
            }
            return res;
        }
    };
    
    //只有1个数出现1次,其余的数都出现3次
    class Solution {
    public:
        int singleNumber(const std::vector<int>& nums) {
            int one = 0, two = 0, three = 0;
            for (int i = 0; i < nums.size(); ++i) {
                two |= one & nums[i];
                one ^= nums[i];
                three = one & two;
                one &= ~three;
                two &= ~three;
            }
            return one;
        }
    };
    
  • 相关阅读:
    Android开发环境配置
    Spring API后端原理及最佳实践
    Hibernate 编程
    MySQL 远程访问
    MySQL 5.7 8.0 重置密码
    H5 流媒体
    你不知道的项目
    Promise
    Why Vuex
    Vue 技术细节
  • 原文地址:https://www.cnblogs.com/smallredness/p/11303394.html
Copyright © 2020-2023  润新知