• LeetCode:Single Number III


    problem:

    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:

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

    Credits:
    Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.

    Subscribe to see which companies asked this question

    Solution:Bit Manipulation

     1 class Solution {
     2 public:
     3     vector<int> singleNumber(vector<int>& nums) {
     4         
     5         int AxorB=0;
     6         for(int i=0;i<nums.size();i++)
     7         {
     8             AxorB^=nums[i];
     9         }
    10         
    11         //取最后一个二进制位  根据区别位将vector中的数分为两个序列
    12         int mask=AxorB&(~(AxorB-1));
    13         int A=0,B=0;
    14         
    15         for(int i=0;i<nums.size();i++)
    16         {
    17             if(mask&nums[i])
    18                 A^=nums[i];
    19             else
    20                 B^=nums[i];
    21                 
    22         }
    23         return vector<int>({A,B});
    24     }
    25 };
  • 相关阅读:
    C语言I博客作业07
    C语言I博客作业06
    C语言I博客作业05
    C语言I博客作业04
    C语言I博客作业02
    Django连接MySql数据库
    asyncio异步编程
    Django-rest framework框架
    Git版本管理工具详细教程
    MySQL的sql_mode模式说明及设置
  • 原文地址:https://www.cnblogs.com/xiaoying1245970347/p/5224890.html
Copyright © 2020-2023  润新知