位运算+leetcode ( 2 )

题一:只出现一次的数字(1)

1.链接

136. 只出现一次的数字 - 力扣(LeetCode)

2.思想

  • 借用位运算中异或操作符的特点,a^a=0,0^a=a
  • 先定义一个sum=0
  • 就用一个循环来遍历这个数组,每次都进行 sum ^ = nums[i]
  • 当循环结束,那么此刻sum里就是正确答案

3.代码 

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

题二:丢失的数字

1.链接

268. 丢失的数字 - 力扣(LeetCode)

2.思路

  • 借用位运算中异或操作符的特点,a^a=0,0^a=a
  • 先定义一个变量sum,并初始化为0
  • 然后在利用一个for循环来处理,每次循环都进行 sum^=i 的操作
  • 在去遍历整个数组,遍历时,进行sum^=nums[i]的操作
  • 最终sum就是要找的那个值

3.代码

class Solution {
public:int missingNumber(vector<int>& nums) {int sum=0;for(int i=1;i<=nums.size();i++){sum^=i;}for(int i=0;i<nums.size();i++){sum^=nums[i];}return sum;}
};

题三:只出现一次的数字 (2)

1.链接

137. 只出现一次的数字 II - 力扣(LeetCode)

2.思路

位图的思想

前提:我们让出现一次的数为:a,出现三次的数统称为b;

  • 由于数据的特殊性,我们可以统计这些数据用二进制表示时,每个位数出现一的个数
  • 判断,该位数是出现1的个数。a 的二进制在该位数时的结果是0或1,而的二进制在该位数时的结果:3的倍数或者0
  • 则统计各个位数出现1的结果则可能是:0+3的倍数,1+3的倍数,0+0,0+1
  • 此时,我们可以对其进行%3的操作,结果等于1,那么则就代表a在这个位是1
  • %3的操作,结果等于1,那么则就将数字在该位修改为1

由于数据范围是:- 2 的31次方——2 的 31 次 方 - 1,那么数据类型为int,就可以进行位图思想

3.代码

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 = sum % 3;if (sum == 1)ret |= (1 << i);}return ret;}
};

题四:只出现一次的数字 (3)

1.链接

260. 只出现一次的数字 III - 力扣(LeetCode)

2.思路

先定义一个int类型的变量 sum ,并初始化为0

  • 先遍历这个数组,并进行 sum ^ =  nums[ i ]的操作
  • 完成遍历操作后,得到的其实就是:二个只出现一次的数,进行异或的结果(sum)
  • 考虑异或的性质,相同为0,相异为1,sum的二进制表示中从左往右出现的第一个1,就是二个只出现一次的数 的二进制表示形式 的第一个不同处
  • 我们可以进行 sum & (-sum)的操作,这样就得到了从左往右出现的第一个1( rs ),并且其它位全为0
  • 然后对数据进行分组处理,按照nums [ i ] & rs 等于0 和 不等于0 进行处理
  • 当不等于0时,对数据进行 tmp ^ = nums[ i ]的操作,最终  tmp就是二个只出现一次的数的其中之一
  • 然后再将 sum ^ tmp , 就得到了另外一个数

3.代码

class Solution {
public:vector<int> singleNumber(vector<int>& nums) {long long sum = 0;for (int j = 0; j < nums.size(); j++) {sum ^= nums[j];}long long rs = sum & (-sum);int tmp = 0;for (int j = 0; j < nums.size(); j++) {if (nums[j] & rs)tmp ^= nums[j];}int b=sum^ tmp;return {tmp, b};}
};

 题五:消失的两个数字(消失的数字的综合题)

 1.链接

面试题 17.19. 消失的两个数字 - 力扣(LeetCode)

 2.思路

总体思路是:

  • 这个问题可以转化为题四,这里其实就是一组数据,其中只有二个数据只出现一次,其它都出现二次
  • 那么就可以,找到只出现一次的二个数据再二进制表示时,第一个不同的位置
  • 然后根据这个为依据,进行分组处理(处理的思路,就是题1)

 3.代码

class Solution {
public:vector<int> missingTwo(vector<int>& nums) {int n = nums.size();int ret = 0;for (int i = 1; i <= n + 2; i++) {ret ^= i;}int sum = 0;for (int i = 0; i < n; i++) {sum ^= nums[i];}int rsum = ret ^ sum;int rs = rsum & (-rsum);int tmp = 0, rtmp = 0;for (int i = 0; i < n; i++) {if (nums[i] & rs)tmp ^= nums[i];else {rtmp ^= nums[i];}}for (int i = 0; i <= n + 2; i++) {if (i & rs)tmp ^= i;elsertmp ^= i;}return {rtmp, tmp};}
};

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

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

相关文章

Google Cloud 2024 年报告重点介绍了关键的网络威胁和防御

Google Cloud 的 2024 年威胁范围报告预测了云安全的主要风险&#xff0c;并提出了加强防御的策略。 该报告由 Google 安全专家撰写&#xff0c;为寻求预测和应对不断变化的网络安全威胁的云客户提供了宝贵的资源。 该报告强调&#xff0c;凭证滥用、加密货币挖矿、勒索软件和…

GO 的 Web 开发系列(五)—— 使用 Swagger 生成一份好看的接口文档

经过前面的文章&#xff0c;已经完成了 Web 系统基础功能的搭建&#xff0c;也实现了 API 接口、HTML 模板渲染等功能。接下来要做的就是使用 Swagger 工具&#xff0c;为这些 Api 接口生成一份好看的接口文档。 一、写注释 注释是 Swagger 的灵魂&#xff0c;Swagger 是通过…

C++ 广度优先搜索(bfs)(五十四)【第一篇】

今天我们来学习一下一个新的搜索&#xff0c;广度优先搜索。 1.广度优先搜索的前提 队列&#xff08;queue&#xff09; 是一种 操作受限制 的线性表&#xff0c;其限制&#xff1a; 只允许从表的前端&#xff08;front&#xff09;进行删除操作&#xff1b; 只允许在表的后端…

嵌入式Qt Qt 中的坐标系统

一.Qt中的坐标系统 实验1&#xff1a;窗口坐标大小 #include <QtGui/QApplication> #include <QPushButton> #include <QDebug> #include "widget.h" int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();qDebug()&…

[JavaWeb玩耍日记]Maven的安装与使用

目录 一.作用 二.安装 三.使用 2.对项目使用compile命令进行编译,看看新的文件会在哪里产生&#xff1f; 3.需要认识的命令 4.Maven对项目执行不同命令的生命周期特点&#xff1f; 5.如何导入工程外的Maven&#xff1f; 6.如何直观地查看Maven导入了哪些工程或哪些jar包…

蓝桥杯嵌入式第六届真题(完成)STM32G431

蓝桥杯嵌入式第六届真题&#xff08;完成&#xff09;STM32G431 题目部分 相关文件 main.c /* USER CODE BEGIN Header */ /********************************************************************************* file : main.c* brief : Main program b…

LeetCode:69.x的平方根

嗨嗨嗨&#xff0c;二分又来了&#xff0c;淦它&#xff0c; 这个题官解是&#xff0c;C函数法&#xff0c;二分&#xff0c;和牛顿迭代法&#xff08;暂且搁置&#xff09;&#xff0c; 当然还有暴力&#xff08;不必讨论&#xff0c;就从0开始一个一个试&#xff09;&#…

Git 消除对某个文件的追踪

参考&#xff1a; &#xff08;尚未验证他的该方法&#xff09; https://www.golinuxcloud.com/git-remove-file-from-tracking/https://www.golinuxcloud.com/git-remove-file-from-tracking/

计网day1

RTT&#xff1a;往返传播时延&#xff08;越大&#xff0c;游戏延迟&#xff09; 一.算机网络概念 网络&#xff1a;网样的东西&#xff0c;网状系统 计算机网络&#xff1a;是一个将分散得、具有独立功能的计算机系统&#xff0c;通过通信设备与线路连接起来&#xff0c;由功…

[疑难杂症2024-001] java多线程运行时遇到java.util.ConcurrentModificationException的解决方案

本文由Markdown语法编辑器编辑完成。 1.背景 由于近日在改进一个医学图像的收图服务。之前的版本&#xff0c;我们采用了pynetdicom的服务。 https://pydicom.github.io/pynetdicom/stable/ 它的介绍为: pynetdicom is a pure Python package that implements the DICOM net…

基于大语言模型的AI Agents

代理&#xff08;Agent&#xff09;指能自主感知环境并采取行动实现目标的智能体。基于大语言模型&#xff08;LLM&#xff09;的 AI Agent 利用 LLM 进行记忆检索、决策推理和行动顺序选择等&#xff0c;把Agent的智能程度提升到了新的高度。LLM驱动的Agent具体是怎么做的呢&a…

Hive调优——explain执行计划

一、explain查询计划概述 explain将Hive SQL 语句的实现步骤、依赖关系进行解析&#xff0c;帮助用户理解一条HQL 语句在底层是如何实现数据的查询及处理&#xff0c;通过分析执行计划来达到Hive 调优&#xff0c;数据倾斜排查等目的。 https://cwiki.apache.org/confluence/d…

Java安全 URLDNS链分析

Java安全 URLDNS链分析 什么是URLDNS链URLDNS链分析调用链路HashMap类分析URL类分析 exp编写思路整理初步expexp改进最终exp 什么是URLDNS链 URLDNS链是Java安全中比较简单的一条利用链&#xff0c;无需使用任何第三方库&#xff0c;全依靠Java内置的一些类实现&#xff0c;但…

网络专栏目录

大家好我是苏麟 , 这是网络专栏目录 . 图解网络 资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) 图解网络目录 基础篇 基础篇 TCP/IP网络模型有几层? : TCP/IP网络模型 键入网址到页面显示,期间发生了什么? : 键入网址到页面显示,期间发生了什么 现阶…

C++:面向对象——类的构造

1.1学会面向对象的编程思想 面向对象的英文缩写是OO&#xff0c;它是一种设计思想。 面向对象有3大特点&#xff1a;封装、继承和多态。 1.封装 封装有两个作用&#xff0c;一个是将不同的小对象封装成一个大对象&#xff1b;另外一个是把一部分内部属性和功能对外界屏蔽。…

数据结构哈希表

这里个大家用数组来模拟哈希表 法一&#xff1a;拉链法 法二&#xff1a;开放寻址法 /** Project: 11_哈希表* File Created:Sunday, January 17th 2021, 2:11:23 pm* Author: Bug-Free* Problem:AcWing 840. 模拟散列表 拉链法*/ #include <cstring> #include <iostr…

Gazebo无法显示模型 [Err] [InsertModelWidget.cc:403] Missing model.config for model

跟着教程一步步运行demo project时遇到了一个问题&#xff1a; 运行launch文件后&#xff0c;gazebo中世界文件加载了&#xff0c;但是机器人模型没有加载出来&#xff0c;之前没有遇到过这种情况。 后面发现&#xff0c;运行launch命令时&#xff0c;一直处在某个conda环境下&…

牛客——递归实现指数型枚举(枚举,dfs)

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述 从 1∼n1\sim n1∼n这 n (n≤16)(n \leq 16)(n≤16) 个整数中随机选取任意多个&#xff0c;输出所有可能的选择方案。 输入描述: 一个整数n。 输出描述: 每行一种方案。同一行内…

Vue学习笔记(三)常用指令、生命周期

Vue学习笔记&#xff08;三&#xff09;常用指令 vue指令&#xff1a;html标签上带有 v- 前缀的特殊属性&#xff0c;不同的指令具有不同的含义&#xff0c;可以实现不同的功能。 常用指令&#xff1a; 指令作用v-for列表渲染&#xff0c;遍历容器的元素或者对象的属性v-bind…

docker安装、运行

1、安装 之前有docker的话&#xff0c;需要先卸载旧版本&#xff1a; sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine 安装之前需要安装yum工具&#xff1a; sud…