LeetCode 75| 位运算

目录

[338 比特位计数](#338 比特位计数)

[136 只出现一次的数字](#136 只出现一次的数字)

[1318 或运算的最小翻转次数](#1318 或运算的最小翻转次数)


338 比特位计数

cpp 复制代码
class Solution {
public:
    vector<int> countBits(int n) {
        vector<int>res(n + 1);
        for(int i = 0;i <= n;i++)res[i] = cal(i);
        return res;
    }
    int cal(int num){
        int res = 0;
        for(int i = 0;i < 32;i++)res += (num >> i) & 1;
        return res;
    }
};

时间复杂度O(n)

空间复杂度O(n)

136 只出现一次的数字

cpp 复制代码
class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int res = 0;
        for(auto num : nums){
            res ^= num;
        }
        return res;
    }
};

时间复杂度O(n)

空间复杂度O(1)

1318 或运算的最小翻转次数

cpp 复制代码
class Solution {
public:
    int minFlips(int a, int b, int c) {
        int res = 0;
        while(a || b || c){
            if(c & 1){
                if((a & 1) == 0 && (b & 1) == 0)res++;
            }else{
                if(a & 1)res++;
                if(b & 1)res++;
            }
            a>>=1;
            b>>=1;
            c>>=1;
        }
        return res;
    }
};

时间复杂度O(n)//n为a,b,c 的最大二进制位数

空间复杂度O(1)

相关推荐
Curry_Math3 分钟前
LeetCode 热题100之技巧关卡
算法·leetcode
ahadee10 分钟前
蓝桥杯每日真题 - 第10天
c语言·vscode·算法·蓝桥杯
军训猫猫头1 小时前
35.矩阵格式的一到一百数字 C语言
c语言·算法
Mr_Xuhhh2 小时前
递归搜索与回溯算法
c语言·开发语言·c++·算法·github
SoraLuna2 小时前
「Mac玩转仓颉内测版12」PTA刷题篇3 - L1-003 个位数统计
算法·macos·cangjie
爱吃生蚝的于勒4 小时前
C语言内存函数
c语言·开发语言·数据结构·c++·学习·算法
ChoSeitaku9 小时前
链表循环及差集相关算法题|判断循环双链表是否对称|两循环单链表合并成循环链表|使双向循环链表有序|单循环链表改双向循环链表|两链表的差集(C)
c语言·算法·链表
Fuxiao___9 小时前
不使用递归的决策树生成算法
算法
我爱工作&工作love我9 小时前
1435:【例题3】曲线 一本通 代替三分
c++·算法
白-胖-子10 小时前
【蓝桥等考C++真题】蓝桥杯等级考试C++组第13级L13真题原题(含答案)-统计数字
开发语言·c++·算法·蓝桥杯·等考·13级