基础位运算

基础知识点:

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;
    }
};
相关推荐
数智工坊2 分钟前
【操作系统-线程介绍】
linux·算法·ubuntu
小龙报4 分钟前
【C语言进阶数据结构与算法】LeetCode27 && LeetCode88顺序表练习:1.移除元素 2.合并两个有序数组
c语言·开发语言·数据结构·c++·算法·链表·visual studio
炽烈小老头5 分钟前
【每天学习一点算法 2026/01/21】倒二进制位
学习·算法
Script kid14 分钟前
Redis(Remote Dictionary Server远程字典服务器)五种常见数据结构及常见用法和指令
服务器·数据结构·redis
辰阳星宇18 分钟前
【工具调用】工具调用后训练参数设计方案总结
人工智能·算法·自然语言处理
范纹杉想快点毕业18 分钟前
C语言查找算法对比分析
数据结构·算法
被星1砸昏头20 分钟前
自定义操作符高级用法
开发语言·c++·算法
2301_8105407321 分钟前
python第一次作业
开发语言·python·算法
Stardep26 分钟前
算法入门19——二分查找算法——X的平方根
算法·leetcode·二分查找算法
We་ct26 分钟前
LeetCode 135. 分发糖果:双向约束下的最小糖果分配方案
前端·算法·leetcode·typescript