位运算题目-Java实现-LeetCode题解:判断字符是否唯一-丢失的数字-两整数之和-只出现一次的数字 II-消失的两个数字

这里是Themberfue

上一篇文章讲完了常见位运算的技巧以及总结

那么本章则通过五道题来运用这些技巧 

判定字符是否唯一

        题目解析

本题要求判断给定字符串中的字符是否唯一,也就是每个字符是否只出现一次

        算法讲解

· 本题用哈希表遍历每一个字符也可以解决

· 如果这题使用位运算的技巧的做题的话,还需引入一个位图的概念:众所周知,int类型有32个bit位,每个bit位不是0就是1,那么便可利用这一性质。

· 将这32个bit位看成一个长度为32的boolean类型的数组,0表示假,1表示真

· 再用到 判断一个数字的某一位是否为0,以及,将一个数字的某一位的0改为1。运用这两个位运算技巧便可解出此题。

        编写代码 

class Solution {public boolean isUnique(String astr) {char[] s = astr.toCharArray();// 鸽巢原理if (s.length > 26) return false;// 位图的思想 => 使用比特位存储信息int bitMap = 0;for (char ch: s) {int x = ch - 'a';if (((bitMap >> x) & 1) == 1) {return false;}bitMap |= 1 << x;}return true;}
}

丢失的数字

        题目解析

本题要求寻找丢失的那个数字,我觉得看到示例解释应该就能看懂了

        算法讲解 

· 我们额外创建一个数组,其长度应该为给定数组长度加一:比如示例3中,n = 9,那么我们的创建数组的长度应该为10,我们需要初始化数组为包含 [0, 9] 中所有数字。

· 有了这一数组,不难发现,除了给定数组那个丢失的数字,加上我们创建的数组,每个数字肯定出现了两次。

· 根据异或(^)运算符的特性,相同的两个数异或的结果为0,所以我们将这两个数组都异或在一起。那么结果就是那个丢失的数字。

· 我们不需要关系异或顺序,因为异或好比乘法,先乘还是后乘都是一样的。

        编写代码 

class Solution {public int missingNumber(int[] nums) {int ret = 0;for (int x: nums) ret ^= x;for (int i = 0; i <= nums.length; i++) ret ^= i;return ret;}
}

两整数之和

        题目解析

本题就是求给定两个数的和,但是切记不能使用 + - 运算符,不然回去等通知吧

         算法讲解

· 重复下面这个步骤,直到 b 等于 0 ,那么此时的 a 就是结果。

· 异或( ^ )操作符的本质就是无进位相加,所以我们再获取二数实际需要在哪个地方的进位就可以

· (a & b) << 1完成的就是这个操作

        编写代码

class Solution {public int getSum(int a, int b) {while (b != 0) {int carry = (a & b) << 1;a = a ^ b;b = carry;}return a;}
}

只出现一次的数字 II 

        题目解析

 

        算法讲解 

        编写代码 

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

消失的两个数字

        题目解析

 

        算法讲解 

        编写代码 

class Solution {public int[] missingTwo(int[] nums) {// 将所有数字异或在一起int xorsum = 0;for (int num: nums) xorsum ^= num;for (int i = 1; i <= nums.length + 2; i++) xorsum ^= i;// 找出两个数字比特位不同的那位int lsb = 0;while (true) {if (((xorsum >> lsb) & 1) == 1) break;else lsb++;}int type1 = 0, type2 = 0;for (int num: nums) {if (((num >> lsb) & 1) == 1) type1 ^= num;else type2 ^= num;}for (int i = 1; i <= nums.length + 2; i++) {if (((i >> lsb) & 1) == 1) type1 ^= i;else type2 ^= i;}return new int[]{type1, type2};}
}

 

 

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

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

相关文章

设计模式02-桥接模式(Java)

4.2 桥接模式 **1.定义&#xff1a;**将抽象与实现分离&#xff0c;使它们可以独立变化。它是用组合关系代替继承关系来实现&#xff0c;从而降低了抽象和实现这两个可变维度的耦合度。 2.结构&#xff1a; 抽象化角色 &#xff1a;定义抽象类&#xff0c;并包含一个对实现化…

【conda】创建、激活、删除虚拟环境

前言一、创建虚拟环境二、删除虚拟环境总结 前言 主要是记录一下步骤 一、创建虚拟环境 地址栏输入cmd&#xff0c;唤起命令符栏目&#xff0c;就可以在指定目录下创建虚拟环境了。 这样方便日后在pycharm直接配置虚拟环境。 conda create -n yolo5-lite python3.9 -y简单来说…

诺贝尔物理学奖:机器学习与神经网络的时代

前言 2024年&#xff0c;诺贝尔物理学奖首次颁发给机器学习与神经网络领域的研究者&#xff0c;标志着科学评奖标准的历史性转变。这一决定引发了学术界的广泛关注&#xff0c;也促使人们深入思考科学研究及其应用的未来。 机器学习与物理学的交融 传统上&#xff0c;诺贝尔物…

Linux中部署Mysql保姆级教程

一、版本说明 本文的版本号是5.7.30&#xff0c;5.6及以上版本的MySQL要求Linux系统虚拟内存不能小于1G&#xff0c;否则MySQL可能无法运行。 二、安装前的准备 2.1查看系统自带的Mariadb rpm -qa|grep mariadb 安装mysql为什么需要卸载mariadb&#xff1a; 以前的Li…

ReactOS系统中搜索给定长度的空间地址区间中的二叉树

搜索给定长度的空间地址区间 //搜索给定长度的空间地址区间 MmFindGapTopDown PVOID NTAPI MmFindGap(PMADDRESS_SPACE AddressSpace,ULONG_PTR Length,ULONG_PTR Granularity,BOOLEAN TopDown );PMADDRESS_SPACE AddressSpace,//该进程用户空间 ULONG_PTR Length,//寻找的空…

java--网络编程

网络的相关概念 网络通信 1.概念:两台设备之间通过网络实现数据传输2.网络通信:将数据通过网络从一台设备传输到另一台设备3.java.net包下提供了一系列的类或接口&#xff0c;供程序员使用&#xff0c;完成网络通信 网络 概念&#xff1a;两台或多台设备通过一定物理设备连接…

P2-3与P2-4.【C语言基本数据类型、运算符和表达式】第三节与第四节

讲解视频&#xff1a; P2-3.【基本数据类型、运算符和表达式】第三节 P2-4.【基本数据类型、运算符和表达式】第四节 目录 必备知识与理论 任务实施 必备知识与理论 C语言中把除了控制语句和输入输出以外的几乎所有的基本操作都作为运算符处理。 其运算符和表达式数量之多&a…

PythonExcel批量pingIP地址

问题&#xff1a; 作为一个电气工程师&#xff08;PLC&#xff09;&#xff0c;当设备掉线的时候&#xff0c;需要用ping工具来检查网线物理层是否可靠连接&#xff0c;当项目体量过大时&#xff0c;就不能一个手动输入命令了。 解决方案一&#xff1a; 使用CMD命令 for /L %…

ARM 中断控制器 GIC-V2

GIC-V2 中断控制器架构 参考文档:《ARMGeneric Interrupt Controller Architecture version 2.0》 GIC:Generic Interrupt Controller(GIC) 本文省略中断虚拟化相关章节。 1、Introduction(简介) 中断状态: The following states apply at each interface between the GI…

论文阅读_大型语言模型增强强化学习调查

中文标题&#xff1a;Survey on Large Language Model-Enhanced Reinforcement Learning: Concept, Taxonomy, and Methods 中文名称: 大型语言模型增强强化学习调查&#xff1a;概念、分类和方法 链接: https://arxiv.org/pdf/2404.00282 作者: Yuji Cao, Huan Zhao, Yuheng C…

ABAQUS应用11——支座弹簧

文章目录 0、背景1、ABAQUS中几类弹簧的简介2、SPRING1的性质初探 0、背景 1、ABAQUS中几类弹簧的简介 先说参考来源&#xff0c;ABAQUS2016的帮助文档里第4卷&#xff0c;32.1.1节&#xff0c;有三种弹簧&#xff08;SPRING1 、SPRING2 以及SPRINGA&#xff09;。 三种弹簧里…

基于LORA的一主多从监测系统_数据发送

数据上传我这里使用了问询的方式&#xff0c;这样的好处一是可以用来统计节点的存活状态&#xff0c;二是可以避免冲突&#xff0c;主节点通过向从节点发送问询帧&#xff0c;从节点收到问询帧后开始向主节点发送数据&#xff0c;同时我们也可以加入不同的帧类型&#xff0c;比…

DSVPN简介与应用

目录 简介 DSVPN 封装模式 Nomal&#xff08;动态&#xff09;方式建立DSVPN 一、配置缺省包过滤 二、划分区域&#xff08;以总部为例&#xff09; 三、配置IP地址&#xff08;以R1为例&#xff09; 四、配置DSVPN 简介 DSVPN DSVPN&#xff08;Dynamic Secure Vir…

初识git · 基本操作

目录 前言&#xff1a; 基本操作 检查是否存在git 初始化仓库 认识三个区域 添加文件 查看.git文件 修改文件 版本回退 撤销操作 删除文件 我的博客即将同步至腾讯云开发者社区&#xff0c;邀请大家一同入驻&#xff1a;https://cloud.tencent.com/developer/suppor…

手撕布隆过滤器:原理解析与面试心得

前言 说来话长&#xff0c;话来说长。前些天我投了一些日常实习的简历&#xff0c;结果足足等了两个礼拜才收到面试通知&#xff0c;看来如今的行情确实是挺紧张的。当时我是满怀信心去的&#xff0c;心想这次一定要好好拷打面试官一番&#xff0c;结果没想到&#xff0c;自我…

美摄科技云服务解决方案,方案成熟,接入简单

美摄科技作为视频处理领域的先锋&#xff0c;凭借其强大的技术实力和深厚的行业经验&#xff0c;推出了成熟的云服务解决方案&#xff0c;为轻量化视频制作开辟了全新的道路。 一、成熟方案&#xff0c;接入无忧 美摄科技云服务解决方案的最大亮点在于其成熟度和易用性。我们…

java事务讲解(详解篇)

本篇博客将各位介绍事务的相关内容&#xff0c;也算是对事物的大部分知识点进行的一个总结&#xff0c;接下来就跟着我一起来学习学习吧~ 实现事务 实现事务的方式大类共有两大类&#xff0c;一种是编程式事务&#xff0c;另一种是声明式事务。 编程式事务的好处在于他的最小…

Postman 接口测试工具学习使用

目录 Postman 下载 postman界面详解 postman接口测试 操作步骤 postman发送post请求总结 postman断言 状态码断言 响应body正文断言&#xff08;3种场景&#xff09; 响应头断言 响应时间断言 postman集合测试 变量的应用 参数变量 1、环境变量 2、全局变量 3、局…

李德仁院士携实验室及大势文旅团队参加“湖北旅游、武当突破”名家谈,分享数智文旅发展新经验

10月12日上午&#xff0c;2024世界武当太极大会在湖北省十堰市武当山盛大开幕。 2023年国家科学技术最高奖获得者、中国科学院、中国工程院院士、武汉大学李德仁教授携测绘遥感信息工程国家重点实验室&#xff08;后简称“实验室”&#xff09;团队以及大势智慧文旅团队&#…

QUIC 协议的优势

QUIC 协议的优势包括&#xff1a; 快速建立连接&#xff1a;将传输层和加密层的握手合并&#xff0c;减少了连接建立的延迟。QUIC 建连时间大约为 0~1RTT&#xff0c;相比 HTTPS 的 3RTT 建连&#xff0c;具有极大的优势。客户端第一次建连的握手协商需 1RTT&#xff0c;而已建…