基础位运算

基础知识点:

1.判断2的幂 n&(n-1)==0

2.每次减一处理 n&(n-1)

3.判断出现1次次数的数 x^0==x,x^x==0,a^b=c则a=b^c,b=a^c

力扣练习题:

136.只出现一次的数字

cpp 复制代码
class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int result=0;
        for(int i=0;i<nums.size();i++)
        {
            result^=nums[i];
        }
        return result;
    }
};

191.位1的个数

cpp 复制代码
class Solution {
public:
    int hammingWeight(uint32_t n) {
        int ret = 0;
        for (int i = 0; i < 32; i++) {
            if (n & (1 << i)) {
                ret++;
            }
        }
        return ret;
    }
};

或者直接调用函数(return __builtin_popcount(n);)

231.2的幂

cpp 复制代码
class Solution {
public:
    bool isPowerOfTwo(int n) {
        return (n>0) && (n & (n-1))==0 ;
    }
};

342.4的幂

cpp 复制代码
class Solution {
public:
    bool isPowerOfFour(int n) {
        if(n>0 && (n&(n-1))==0 && n%3==1)
        {
            return true;
        }
        else return false;
    }
};

476.数字的补数()

cpp 复制代码
class Solution {
public:
    int findComplement(int num) {
        //a^b=c a=b^c 已知a和b位相反 所以先求出c=111............
        int num1=1;
        while(num1<num)
        {
            num1<<=1,num1++;
        }//找到比num大全为1的数 
        return num1^num;
    }
};
相关推荐
xiaoshiguang316 分钟前
LeetCode:222.完全二叉树节点的数量
算法·leetcode
爱吃西瓜的小菜鸡18 分钟前
【C语言】判断回文
c语言·学习·算法
别NULL20 分钟前
机试题——疯长的草
数据结构·c++·算法
TT哇24 分钟前
*【每日一题 提高题】[蓝桥杯 2022 国 A] 选素数
java·算法·蓝桥杯
ZSYP-S2 小时前
Day 15:Spring 框架基础
java·开发语言·数据结构·后端·spring
yuanbenshidiaos2 小时前
C++----------函数的调用机制
java·c++·算法
唐叔在学习2 小时前
【唐叔学算法】第21天:超越比较-计数排序、桶排序与基数排序的Java实践及性能剖析
数据结构·算法·排序算法
ALISHENGYA2 小时前
全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之分支结构(switch语句)
数据结构·算法
chengooooooo2 小时前
代码随想录训练营第二十七天| 贪心理论基础 455.分发饼干 376. 摆动序列 53. 最大子序和
算法·leetcode·职场和发展
jackiendsc2 小时前
Java的垃圾回收机制介绍、工作原理、算法及分析调优
java·开发语言·算法