leetcode算法之位运算

news2024/11/27 3:41:38

目录

  • 1.判断字符是否唯一
  • 2.丢失的数字
  • 3.两整数之和
  • 4.只出现一次的数字II
  • 5.消失的两个数字
  • 6.位1的个数
  • 7.比特位计数
  • 8.汉明距离

1.判断字符是否唯一

判断字符是否唯一
在这里插入图片描述

class Solution {
public:
    bool isUnique(string astr) {
        //利用鸽巢原理做优化
        if(astr.size()>26) return false;

        int bitMap = 0; //使用位图来存储
        for(auto ch:astr)
        {
            int i = ch-'a';
            if((bitMap>>i)&1 == 1) return false;
            bitMap |= (1<<i);
        }
        return true;
    }
};

2.丢失的数字

丢失的数字
在这里插入图片描述

class Solution {
public:
    int missingNumber(vector<int>& nums) {
        int ret = 0;
        for(auto x:nums) ret^=x;
        for(int i=0;i<=nums.size();i++) ret^=i;
        return ret;
    }
};

3.两整数之和

两整数之和
在这里插入图片描述

class Solution {
public:
    int getSum(int a, int b) {

        while(b!=0)
        {
            int x = a^b;
            unsigned int carry = (unsigned int)(a&b)<<1;
            a = x;
            b = carry;
        }
        return a;
    }
};

4.只出现一次的数字II

只出现一次的数字II
在这里插入图片描述

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int ret = 0;
        for(int i=0;i<32;i++)
        {
            int sum = 0;
            for(auto x:nums)
            {
                if((x>>i)&1 == 1) sum++;
            }
            sum %=3;
            if(sum == 1)
            {
                ret |= (1<<i);
            }
        }
        return ret;
    }
};

5.消失的两个数字

消失的两个数字
在这里插入图片描述

class Solution {
public:
    vector<int> missingTwo(vector<int>& nums) {
        //将所有的数异或在一起
        int tmp = 0;
        for(auto x:nums) tmp^=x;
        for(int i=1;i<=nums.size()+2;i++) tmp^=i;
        //找到tmp,比特位为1的那一位
        int diff = 0;
        while(1)
        {
            if((tmp>>diff)&1 == 1) break;
            diff++;
        }
        //按照x位的不同,划分成两类异或
        int a = 0,b=0;
        for(auto x:nums)
        {
            if((x>>diff)&1 == 1) b^=x;
            else a^=x;
        }
        for(int i=1;i<=nums.size()+2;i++)
        {
            if((i>>diff)&1 == 1) b^=i;
            else a^=i;
        }
        return {a,b};
    }
};

6.位1的个数

位1的个数
在这里插入图片描述
在这里插入图片描述

class Solution {
public:
    int hammingWeight(uint32_t n) {
        int sum = 0;
        for(int i=0;i<32;i++)
        {
            if((n>>i)&1 == 1) sum++;
        }
        return sum;
    }
};

7.比特位计数

比特位计数
在这里插入图片描述

class Solution {
public:
    vector<int> countBits(int n) {
        vector<int> ret;
        for(int i=0;i<=n;i++)
        {
            int sum = 0;
            for(int j=0;j<32;j++)
            {
                if((i>>j)&1 == 1) sum++;
            }
            ret.push_back(sum);
        }
        return ret;
    }
};

8.汉明距离

汉明距离
在这里插入图片描述

class Solution {
public:
    int hammingDistance(int x, int y) {
        int sum = 0;
        int temp = x^y;
        for(int i=0;i<32;i++)
        {
            if((temp>>i)&1 == 1) sum++;
        }
        return sum;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1219077.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

置信区间的介绍和使用

一、理论 计算置信区间的具体方法通常取决于所选择的统计分布以及所使用的估计方法。在正态分布下&#xff0c;以样本均值为中心的置信区间的计算是比较常见的&#xff0c;尤其是当样本大小足够大时&#xff0c;根据中心极限定理&#xff0c;样本均值的分布接近正态分布。 以…

提升提测质量之研测共建 | 京东云技术团队

一、序 日常研测工作演绎 你是否也有同样的困惑&#xff1f; 跟进的需求&#xff0c;就在提测前一秒&#xff0c;被告知不能如期提测了&#xff0c;研测计划被打乱&#xff1b; 提测的功能&#xff0c;犹如遇到不好的购物体验&#xff0c;缺斤短两&#xff0c;与prd预期不符…

什么是圆锥的准线?

定曲线C叫做锥面的准线&#xff0c;构成曲面的每一条直线叫做母线。

来文心中国行厦门站,感受大模型落地生花的进展!

11月22日&#xff0c;文心中国行将走进厦门。届时&#xff0c;政府、高校及企业的相关专家将现场分享AI和大模型最新进展&#xff0c;从人工智能政策解读&#xff0c;到大模型底层技术&#xff0c;再到产教融合下的空间感知与计算&#xff0c;产业创新应用洞察及实践案例等等&a…

uniapp form表单提交事件手动调用

背景&#xff1a; UI把提交的按钮弄成了图片&#xff0c;之前的button不能用了。 <button form-type"submit">搜索</button> 实现&#xff1a; html&#xff1a; 通过 this.$refs.fd 获取到form的vue对象。手动调用里面的_onSubmit()方法。 methods:…

安全函数使用及源码

几个常规内存函数经常会使用的怀疑人生&#xff0c;现在整理一下 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 以下对内存函数进行整理。 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、资源 MSDN网址 …

智慧能源太阳能光伏数据采集终端钡铼技术4G无线RTU

智慧能源太阳能光伏系统在当今的能源行业中扮演着越来越重要的角色&#xff0c;而钡铼技术有限公司的4G无线RTU&#xff08;远程终端单元&#xff09;作为数据采集终端&#xff0c;为智慧能源太阳能光伏系统的监测和管理提供了全新的解决方案。 首先&#xff0c;钡铼技术的4G无…

新的 Reptar CPU 缺陷影响英特尔台式机和服务器系统

英特尔修复了其现代台式机、服务器、移动和嵌入式 CPU 中的一个高严重性 CPU 漏洞&#xff0c;包括最新的 Alder Lake、Raptor Lake 和 Sapphire Rapids 微架构。 攻击者可以利用该缺陷&#xff08;追踪为CVE-2023-23583并被描述为“冗余前缀问题”&#xff09;来升级权限、获…

宝藏!宝藏!在线就能制作产品图册

哇塞&#xff01;太棒了&#xff01;你听说过吗&#xff1f;现在只要在线就能制作产品图册&#xff0c;简直是个宝藏&#xff01; 制作产品图册对于很多公司和企业来说&#xff0c;可是个不小的挑战。不仅要花费大量时间和精力&#xff0c;还要投入不少金钱&#xff0c;真是让…

「Verilog学习笔记」用3-8译码器实现全减器

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 分析 首先列出3-8译码器和全减器的真值表 全减器真值表如下 3-8译码器真值表如下 timescale 1ns/1nsmodule decoder_38(input E ,input A0 …

总结 CNN 模型:将焦点转移到基于注意力的架构

一、说明 在计算机视觉时代&#xff0c;卷积神经网络&#xff08;CNN&#xff09;几十年来一直是主导范式。直到 2021 年 Vision Transformers (ViTs) 出现&#xff0c;这个领域才开始发生变化。现在&#xff0c;是时候采用受 Transformer 架构启发的基于注意力的模型了&#x…

巾帼调查队开展实务调查技能,促全职妈妈联增收

2024年11月14日上午&#xff0c;由罗湖区妇联主办、罗湖区懿米阳光公益发展中心承办的“巾帼调查队—社区女性增值计划”项目第三期活动在罗湖区妇儿大厦六楼成功举办&#xff0c;30名阳光妈妈及全职妈妈参与了此次调查实务技巧培训。 在培训开始之前&#xff0c;巾帼调查队的创…

OSPF开放最短路径优先(Open Shortest Path First)协议

OSPF开放最短路径优先(Open Shortest Path First)协议 为克服RIP的缺点(限制网络规模&#xff0c;坏消息传得慢)在1989年开发出来的原理很简单&#xff0c;但实现很复杂使用了Dijkstra提出的最短路径算法SPF(Shortest Path First)采用分布式的链路状态协议(link state protoco…

Python字符串类型

目录 目标 版本 官方文档 书写格式 字符串合并 常用函数 字母转小写&#xff08;首字母转大写&#xff09; 字母转小写&#xff08;适用于在国际化环境中&#xff0c;忽略字母大小写进行比较的场景&#xff09; 字母转小写&#xff08;适用于非国际化环境中&#xff0…

在计算机领域如神一般存在的人都有哪些?

✍️作者简介&#xff1a;沫小北/码农小北&#xff08;专注于Android、Web、TCP/IP等技术方向&#xff09; &#x1f433;博客主页&#xff1a;沫小北/码农小北 开源中国、稀土掘金、51cto博客、博客园、知乎、简书、慕课网、CSDN &#x1f514;如果文章对您有一定的帮助请&…

IDEA远程一键部署SpringBoot到Docker

IDEA是Java开发利器&#xff0c;Spring Boot是Java生态中最流行的微服务框架&#xff0c;docker是时下最火的容器技术&#xff0c;那么它们结合在一起会产生什么化学反应呢&#xff1f; 一、开发前准备 1. Docker安装 可以参考&#xff1a;https://docs.docker.com/install/ 2…

(C语言)输入一个序列,判断是否为奇偶交叉数

#include <stdio.h> #include <string.h> int main() {char str[50];gets(str);int len,tmp 1;len strlen(str); //获取字符串长度 for (int i 0;i < len-1 ;i ){if((str[i] % 2 0 ) && (str[i1] % 2 ! 0)) //判断先偶数后奇数序列 tmp ;else if((s…

fiddler展示接口的响应时间

最近项目组迁移了一个新项目&#xff0c;想对比迁移前后访问菜单的响应时间是否有变化&#xff0c;因为没需求文档&#xff0c;所以只有靠fiddler一个个的抓接口来看&#xff0c;开发经理想要看具体每个接口耗时&#xff0c;虽然点击接口&#xff0c;在页面上也能看到接口响应时…

操作指南|JumpServer堡垒机支持通过Passkey进行登录认证

伴随着互联网应用的深度普及&#xff0c;用户账户安全的重要性不言而喻。密码是目前互联网用户保护在线账户安全和隐私的主要手段。然而&#xff0c;传统密码技术本身也存在着一些缺陷。 首先&#xff0c;密码是由用户创建的&#xff0c;用户通常会出于易用性而非实际的安全性…

Pytorch D2L Subplots方法对画图、图片处理

问题代码 def show_images(imgs, num_rows, num_cols, titlesNone, scale1.5): #save """绘制图像列表""" figsize (num_cols * scale, num_rows * scale) _, axes d2l.plt.subplots(num_rows, num_cols, figsizefigsize) axes axes.flatten…