关于位运算

只出现一次的数字: 

给你一个非空整数数组 nums,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现一次的元素。 

 

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int j=0;
        for(auto i:nums)
        {
            j^=i;
        }
        return j;

    }
};

 这道题其实告诉你有两个重复出现的数,就在提示你用异或了,用0依次与其他数异或,最后出现两次的都被消掉了,最后剩下的数就是只出现一次的数。

只出现一次的数字 :

 给你一个整数数组 nums,除某个元素仅出现 一次外,其余每个元素都恰出现 三次。请你找出并
返回那个只出现了一次的元素。

 第一部分:因为每个数是32位,我们把每个数的每一位分别放进一个数组,去统计每一位所有出现1的次数。1<<i 的意思是为了探测每一位的1出现的次数。将那个值与(1<<i)进行“与”运算,只要那一位是1,条件为真,将代表这一位的个数的数组进行加1。反复遍历,直到所有都遍历完为止。

第二部分:看每一位是否是3*N+1还是3*N+1,因为3*N+1代表那个要找的数这一位是1,3*N代表0,然后我们再定义一个变量num=0,如果是3*N+1,则将num与(1<<i)进行“或”运算,知道遍历完所有的,num就是我们要找的数了。

记住探测某1位是0还是1,用“与”运算。使某1位变成1,用“或”运算。

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int v[32] = {0};
        for (auto val : nums) {
            for (int i = 0; i < 32; i++) {
                if (val & (1 << i)) {
                    v[i]++;
                }
            }
        }
        int num = 0;
        for (int i = 0; i < 32; i++) {
            if (v[i] % 3 == 1) {
                num |= (1 << i);
            }
        }
        return num;
    }
    
};

相关推荐

  1. 【C语言】关于运算符的简单运用

    2024-01-06 08:30:02       52 阅读
  2. <span style='color:red;'>位</span><span style='color:red;'>运算</span>

    运算

    2024-01-06 08:30:02      36 阅读
  3. C#位移运算运算

    2024-01-06 08:30:02       44 阅读
  4. 涂卡——运算

    2024-01-06 08:30:02       54 阅读
  5. LeetCode 75| 运算

    2024-01-06 08:30:02       56 阅读
  6. 运算trick

    2024-01-06 08:30:02       64 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-06 08:30:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-06 08:30:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-06 08:30:02       82 阅读
  4. Python语言-面向对象

    2024-01-06 08:30:02       91 阅读

热门阅读

  1. CCF-CSP 201809-2 买菜 C++满分题解

    2024-01-06 08:30:02       53 阅读
  2. 图像分割实战-系列教程12:deeplab系列算法概述

    2024-01-06 08:30:02       54 阅读
  3. 【Linux命令查看docker hub pull ratelimit】

    2024-01-06 08:30:02       59 阅读
  4. [应急]Oracle抓undo高的语句

    2024-01-06 08:30:02       58 阅读
  5. unity中旋转 transform.Rotate

    2024-01-06 08:30:02       57 阅读
  6. Kubernetes(K8s)命令大全

    2024-01-06 08:30:02       54 阅读
  7. 计算机二级Python选择题考点——公共基础部分

    2024-01-06 08:30:02       45 阅读
  8. CSS 使用技巧

    2024-01-06 08:30:02       59 阅读
  9. Go语言程序设计-第7章--接口

    2024-01-06 08:30:02       46 阅读