• leetcode 260


    这个是曾经一家公司的面试题,主要是利用这两个数的二进制中肯定有一位不同,利用这一位异或的到两组数据,再分别对着两组数据进行异或即可得到最终答案

     1 class Solution {
     2 public:
     3     vector<int> singleNumber(vector<int>& nums) {
     4         int intersect=0;
     5         for(int i=0;i<nums.size();i++)
     6            intersect^=nums[i];
     7        int bindif=0,num=1;
     8        while(intersect) {
     9            if(intersect%2==1)
    10               break;
    11               intersect/=2;
    12               num*=2;
    13        }
    14        vector<int>result(2,0);
    15        for(int i=0;i<nums.size();i++) {
    16        if((num&nums[i])==0)
    17        result[0]^=nums[i];
    18        else
    19            result[1]^=nums[i];
    20        }
    21        return result;
    22     }
    23 };
  • 相关阅读:
    差分约束系统详解
    AC自动机详解
    KMP算法详解
    ST算法详解
    Trie详解
    欧拉路径详解
    树上差分详解
    LCA详解
    树链剖分详解
    树的直径详解
  • 原文地址:https://www.cnblogs.com/thefirstfeeling/p/5691844.html
Copyright © 2020-2023  润新知