位图算法经典剖析(未完)

news2024/11/20 9:33:40

第一题 只出现一次的数字||

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

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int ret=0;

        for(int i=0;i<32;i++)//第i位
        {
            int sum=0;//该位1的和
            for(int j=0;j<nums.size();j++)//第j个数字
            {
                if( ( (nums[j] >> i) & 1) == 1) ++sum;
            }
            sum%=3;
            if(sum)
            ret=(1<<i) | ret;

        }
        return ret;
    }
};

第二题 两整数之和

给你两个整数 a 和 b ,不使用 运算符 + 和 - ,计算并返回两整数之和。

https://leetcode.cn/problems/sum-of-two-integers/

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

        while(a != 0)//把a当做进位
        {
            int carry = (a & b) <<1;//找到进位
            b=a^b;//(无进位相加处理)
            a=carry;//(存储进位信息,循环无进位相加,直到被加的数等于零。)
        }
        return b;
    }
};

第三题 消失的两个数字

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

只能处理有序数组

class Solution {
public:
    vector<int> missingTwo(vector<int>& nums) {
        int now=1,a[2]={0};
        int q=0;
        for(auto e: nums)
        {
            cout<<e<<endl;
        }
        while(now<nums[0])
        {
            if(q>=2) return {a[0],a[1]};
            a[q++]=now;
            now++;
        }
        if(q>=2) return {a[0],a[1]};
        for(int i=0;i<nums.size()+2;i++)
        {
            if(q>=2) return {a[0],a[1]};
            if(i>=nums.size())//越界了还没找到
            {
                while(q<2) a[q++]=now++;
                break;
            }
            if(now != nums[i])
            {
                int tmp=i;
                while(now != nums[i])//连续的情况
                {
                    a[q++]=now++;
                    if(q>=2) return {a[0],a[1]};
                }
                now++;
            }
            else now++;
        }

        return {a[0],a[1]};
    }
};

可以排序一下

class Solution {
public:
    vector<int> missingTwo(vector<int>& nums) {
        int now=1,a[2]={0};
        int q=0;
        sort(nums.begin(),nums.end());
        while(now<nums[0])
        {
            if(q>=2) return {a[0],a[1]};
            a[q++]=now;
            now++;
        }
        if(q>=2) return {a[0],a[1]};
        for(int i=0;i<nums.size()+2;i++)
        {
            if(q>=2) return {a[0],a[1]};
            if(i>=nums.size())//越界了还没找到
            {
                while(q<2) a[q++]=now++;
                break;
            }
            if(now != nums[i])
            {
                int tmp=i;
                while(now != nums[i])//连续的情况
                {
                    a[q++]=now++;
                    if(q>=2) return {a[0],a[1]};
                }
                now++;
            }
            else now++;
        }

        return {a[0],a[1]};
    }
};

位运算解法最优

        int tmp=0;
        for(auto e : nums)
        {
            tmp^=e;
        }
        for(int i = 1;i<=nums.size()+2;i++)
        {
            tmp^=i;
        }
        //现在tmp中存的是a^b
        int diff=0;
        while(diff<32)
        {
            if( ((tmp>>diff) & 1)==1) break;
            diff++;
        }
        int a=0,b=0;//记得初始化
        for(auto e :nums)
        {
            if(((e>>diff) & 1)==1) a^=e;
            else b^=e; 
        }

        for(int i=1;i<=nums.size()+2;i++)//小于等于漏了
        {
            if(((i>>diff) & 1)==1) a^=i;
            else b^=i;             
        }
        return {a,b};

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

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

相关文章

35二叉树-树的最小深度

目录 LeetCode之路——111. 二叉树的最小深度 分析 解法一&#xff1a;广度优先查询 解法二&#xff1a;深度优先查询 LeetCode之路——111. 二叉树的最小深度 给定一个二叉树&#xff0c;找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说…

基于STM32与ESP8266的太空人WiFi天气时钟(代码开源)

前言&#xff1a;本文为手把手教学ESP8266著名开源项目——太空人WiFi天气时钟&#xff0c;不同的是本次项目采用的是STM32作为MCU。两者开发过程中有因为各自芯片的特点&#xff08;时钟频率&#xff0c;内存大小等&#xff09;&#xff0c;导致开发程序大不相同&#xff0c;很…

Redis 持久化配置,RDB和AOF方式配置说明

文章目录 一、概述二、RDB 持久化方式配置三、AOF 持久化方式配置 如果您对Redis的了解不够深入请关注本栏目&#xff0c;本栏目包括Redis安装&#xff0c;Redis配置文件说明&#xff0c;Redis命令和数据类型说明。 一、概述 Redis 持久化是指将 Redis 数据存储到磁盘上&#x…

KVM实验之动态迁移

前言 一台NFS&#xff08;192.168.184.132&#xff09; 一台KVM-a&#xff08;192.168.184.133&#xff09; 一台KVM-b&#xff08;192.168.184.134&#xff09; NFS配置&#xff1a; [rootlocalhost ~]# setenforce 0 //关闭selinux [rootlocalhost ~]# service iptables st…

python re 匹配所有字段名称相同的值

import retext {"code": 200,"message": "success","traceId": "da0b668c-4d67-44bf-907f-c072fc63839a","data": {"list": [{"articleId": 121862102,"title": "python 目录…

k8s 金丝雀发布与声明式管理

Deployment控制器支持自定义控制更新过程中的滚动节奏&#xff0c;如“暂停(pause)”或“继续(resume)”更新操作。比如等待第一批新的Pod资源创建完成后立即暂停更新过程&#xff0c;此时&#xff0c;仅存在一部分新版本的应用&#xff0c;主体部分还是旧的版本。然后&#xf…

用图说话——流程图进阶

目录 一、基本流程图 二、时序流程图 一、基本流程图 经常阅读歪果仁绘制的流程图&#xff0c;感觉比较规范&#xff0c;自己在工作中也尝试用他们思维来绘图&#xff0c;这是一个小栗子&#xff1a; 二、时序流程图 在进行Detail设计过程中&#xff0c;一般的绘图软件显得…

微信小程序笔记功能(富文本editor功能)开发

一、效果图展示 模拟器及pc 端效果图 手机端就不贴了 二、把官方示例copy到自己的项目传送门 三、改一改上传图片功能 insertImage() {const that thiswx.chooseImage({// count:1 一次选择图片的个数success: function (response) {// 多张图片上传response.tempFilePaths…

基于opencv的selenium滑动验证码的实现

这篇文章主要介绍了基于opencv的selenium滑动验证码的实现&#xff0c;文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值&#xff0c;需要的朋友们下面随着小编来一起学习学习吧 基于selenium进行动作链 由于最近很多人聊到滑动验证码…

Python通过pyecharts对爬虫房地产数据进行数据可视化分析(一)

一、背景 对Python通过代理使用多线程爬取安居客二手房数据&#xff08;二&#xff09;中爬取的房地产数据进行数据分析与可视化展示 我们爬取到的房产数据&#xff0c;主要是武汉二手房的房源信息&#xff0c;主要包括了待售房源的户型、面积、朝向、楼层、建筑年份、小区名称…

图像去噪滤波算法汇总(Python)

前言 上篇文章&#xff1a;图像数据噪音种类以及Python生成对应噪音&#xff0c;汇总了常见的图片噪音以及噪音生成方法&#xff0c;主要用在数据增强上面&#xff0c;作为数据集填充的方式&#xff0c;可以避免模型过拟合。想要了解图像数据增强算法的可以去看本人所撰这篇文…

IO,库-10.24.25

库-10.24.25 一、概念 头文件&#xff1a;.h&#xff1a;函数声明&#xff0c;结构体定义&#xff0c;宏定义&#xff0c;外部引用&#xff0c;重定义&#xff0c;条件编译 #include <>:从系统路径&#xff08;/usr/include&#xff09;下查找 #include " "&am…

如何将Mysql数据库的表导出并导入到另外的架构

如何将Mysql数据库的表导出并导入到另外的架构 准备一、解决方法1.右键->导出->用mysqldump导出2.注意路径一般为&#xff1a;C:/Program Files/MySQL/MySQL Server 8.0/bin/mysqldump.exe和导出的sql文件位置3.右键->SQL脚本->运行SQL脚本4.找到SQL脚本并点击确定…

[moeCTF 2023] REV

逆向这东西&#xff0c;不太好说。 base64 这是个pyc文件&#xff08;python编译后的字节码文件&#xff09;&#xff0c;这东西可以直接用各种方法反编译。也可以不弄&#xff0c;必竟这应该签到级别的。用notepad打开&#xff0c;可以看到base64的编译和两个码表。显然猜是…

mac系统u盘启动盘制作教程,更新至macOS Sonoma 14

mac系统怎么制作装系统的u盘,如果您要在多台电脑上安装 macOS&#xff0c;而又不想每次都下载安装器&#xff0c;这时可引导安装器就会很有用。一起来看苹果电脑u盘启动盘制作教程吧。 Macos系统安装包合集包揽macos 10.15&#xff0c;macos 11和苹果最新系统等多个版本 1、A…

Windows 和 Linux 这2个系统在进行编程实现的时候的一些区别:

很惭愧&#xff0c;学了很多年才意识到&#xff0c;噢&#xff0c;原来这两个系统实现一些功能的时候会使用到不同的库&#xff0c;使用不同的函数。 那么&#xff0c;也会延伸出一些问题&#xff1a; 比如&#xff0c;如何实现版本的迁移。一个在Linux上运行的代码如何可以比…

Instant-NGP中的多分辨率哈希编码

Instant-NGP的出现&#xff0c;无疑给神经表达领域带来了新的生命力。可认为是NeRF诞生以来的关键里程碑了。首次让我们看到了秒级的重建、毫秒级的渲染的NeRF工作。 作为如此顶到爆的工作&#xff0c;Instant-NGP毫无疑问斩获SIGGRAPH 2022的最佳论文。虽然只是五篇最佳论文之…

微信公众号推送封面图制作:专业技巧大揭秘

在微信公众号推送中&#xff0c;一个吸引人的封面设计是吸引读者点击的重要因素。本文将指导你如何使用免费在线海报制作工具&#xff0c;如乔拓云&#xff0c;来制作一个适合节日的海报模板&#xff0c;并编辑文本、图片以及调整字体、颜色、布局等&#xff0c;最后导出并保存…

【Linux前篇 】VMWare虚拟机安装与环境配置及远程连接 —— windows版

目录 一、操作系统 1.1 什么是操作系统 1.2 常见操作系统 1.3 个人版本和服务器版本的区别 1.4 Linux的各个版本 二、VMWare 虚拟机安装配置流程 2.1 安装 2.2 配置虚拟网络编辑器 三、安装配置 Windows Server 2012 R2 3.1 创建虚拟机 3.2 安装 Windows Server 2012…

Linux文件I/O

下面的内容需要了解系统调用&#xff0c;可看下面的链接&#xff1a; 系统调用来龙去脉-CSDN博客 1.底层文件IO和标准IO 这里指的是操作系统提供的IO服务&#xff0c;不同于ANSI建立的标准IO。 底层IO和标准IO各自所使用的函数&#xff1a; 区别&#xff1a; 1.底层文件IO不…