位运算题目-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.mzph.cn/bicheng/56937.shtml

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

相关文章

网络空间安全之一个WH的超前沿全栈技术深入学习之路(二:渗透测试行业术语扫盲)作者——LJS

欢迎各位彦祖与热巴畅游本人专栏与博客 你的三连是我最大的动力 以下图片仅代表专栏特色 [点击箭头指向的专栏名即可闪现] 专栏跑道一 ➡️网络空间安全——全栈前沿技术持续深入学习 专栏跑道二 ➡️ 24 Network Security -LJS ​ ​ ​ 专栏跑道三 ➡️ MYSQL REDIS Advan…

Java Memory Model

内存模型 JMM(Java 内存模型)主要定义了对于一个共享变量&#xff0c;当另一个线程对这个共享变量执行写操作后&#xff0c;这个线程对这个共享变量的可见性。 Java Memory Model&#xff08;JMM&#xff09;&#xff0c;本身是一种抽象的概念&#xff0c;实际上并不存在&…

头戴耳机最值得购买的牌子有哪些?四款公认口碑和性价比高推荐

说到头戴式耳机&#xff0c;大部分人都会面另一个问题&#xff0c;那就是如何选购一款好用实惠的头戴耳机。有的人图便宜&#xff0c;结果不仅音质不好&#xff0c;佩戴还不舒服&#xff0c;而有的人图牌子&#xff0c;结果却交了“智商税”&#xff01;俗话说买对不买贵&#…

xx.sh: 行 2: $‘\r‘:未找到命令

一、解决方案 先说解决方案&#xff1a;使用 dos2unix 工具将文件的换行符转换为 Unix 格式 sudo apt install dos2unix dos2unix scripts/v1_5/eval/textvqa.sh二、具体问题 再分析具体问题 在运行本地的一个sh文件时&#xff0c;出现无法找到命令的报错 bash scripts/v1…

2015年-2016年 软件工程程序设计题(算法题)实战_c语言程序设计数据结构程序设计分析

文章目录 2015年1.c语言程序设计部分2.数据结构程序设计部分 2016年1.c语言程序设计部分2.数据结构程序设计部分 2015年 1.c语言程序设计部分 1.从一组数据中选择最大的和最小的输出。 void print_maxandmin(double a[],int length) //在一组数据中选择最大的或者最小的输出…

JavaWeb合集08-项目开发实战

八、项目开发 1、项目搭建 1.1 配置配置文件 application.properties文件 spring.application.namemybatis_testspring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver spring.datasource.urljdbc:mysql://localhost:3306/homepage spring.datasource.usernameroot sp…

闪迪sd卡如何恢复删除的内容?这3种方法很实用

在数字时代&#xff0c;闪迪SD卡因其便携性、高容量和稳定性&#xff0c;成为我们日常生活中不可或缺的数据存储设备。然而&#xff0c;数据丢失的风险也如影随形&#xff0c;一个不小心的误删除、格式化或是其他意外情况&#xff0c;都可能让我们珍贵的照片、视频、文档等重要…

Vue详细入门(语法【一】)

今天滴学习目标&#xff01;&#xff01;&#xff01; Vue1. 什么是Vue.js2. Vue是怎么使用的嘞3. MVVM是什么嘞&#xff1f;4. Vue有哪些指令1. v-bind2.v-model3.v-if 和 v-else4. v-for5. v-show6. v-on 咱们先了解一下什么是Vue&#xff0c;Vue是怎么使用的嘞&#xff0c;V…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-19

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-19 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-19目录1. What makes your model a low-empathy or warmth person: Exploring theOrigins of Personality in LLMs摘要研究背景算…

小公司团队管理:8个你需要知道的要点

小公司要想管理好团队&#xff0c;关键在于明确的目标与愿景、有效的沟通机制、灵活的激励制度、培养团队协作精神、领导者以身作则。其中&#xff0c;有效的沟通机制尤为重要。建立畅通的沟通渠道&#xff0c;不仅可以提高工作效率&#xff0c;还能及时发现并解决问题&#xf…

MatLab Desired port was :31515解决方案

前言&#xff1a;使用的MatLabR2022b今天突然出现了错误&#xff0c;在程序中打不开文件。后尝试了下面的方法&#xff0c;可以解决。 解决方法一&#xff1a; 搜索栏输入&#xff1a;firewall.cpl 找到相关项&#xff0c;右键属性&#xff0c;设置为允许。 之后就可以了…

【个人同步与备份】电脑(Windows)与手机/平板(Android)之间文件同步

文章目录 1. syncthing软件下载2. syncthing的使用2.1. 添加设备2.1.1. syncthing具备设备发现功能&#xff0c;因此安装好软件&#xff0c;只需确认设备信息是否对应即可2.1.2. 如果没有发现到&#xff0c;可以通过设备ID连接2.1.3. 设置GUI身份验证用户&#xff0c;让无关设备…

FloodFill 算法(DFS)

文章目录 FloodFill 算法&#xff08;DFS&#xff09;图像渲染岛屿数量岛屿的最大面积被围绕的区域太平洋大西洋水流问题扫雷游戏衣橱整理 FloodFill 算法&#xff08;DFS&#xff09; 漫水填充(Flood Fi)算法是一种图像处理算法&#xff0c;在计算机图形学和计算机视觉中被广泛…

阿里开源Multi-(llm)Agent应用框架: Agentscope探究与学习

1. 架构图 2. 核心概念 Core Concepts 2.1 Message&#xff08;消息&#xff09; 是信息的载体&#xff08;例如指令、多模态数据和对话内容&#xff09;。在AgentScope中&#xff0c;消息是Python字典的子类&#xff0c; 具有name和content作为必要字段&#xff0c;url作为可…

[项目详解][boost搜索引擎#1] 概述 | 去标签 | 数据清洗 | scp

目录 一、前言 二、项目的相关背景 三、搜索引擎的宏观原理 四、搜索引擎技术栈和项目环境 五、正排索引 VS 倒排索引--原理 正排索引 分词 倒排索引 六、编写数据去除标签和数据清洗模块 Parser 1.数据准备 parser 编码 1.枚举文件 EnumFile 2.去标签ParseHtml(…

【CSS in Depth 2 精译_048】7.2 CSS 响应式设计中的媒体查询原则(中):页面断点(breakpoint)样式的添加

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 【第七章 响应式设计】&#xff08;概述&#xff09; 7.1 移动端优先设计原则&#xff08;上篇&#xff09; 7.1.1 创建移动端菜单&#xff08;下篇&#xff09;7.1.2 给视口添加 meta 标签&#xf…

「数学::快速幂」矩阵快速幂运算|快速斐波那契数列 / LeetCode 509(C++)

目录 概述 思路 算法过程 复杂度 Code 概述 LeeCode 509&#xff1a; 斐波那契数 &#xff08;通常用 F(n) 表示&#xff09;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; F(0) 0&#xff…

linux--库指令

ldd ldd 可执行文件路径 显示依赖的库的查找路径以及是否查找到了。

Request2:Post请求和Json

百度翻译拿到自己想看的数据&#xff0c;下图查看请求到数据的请求 preview提前看下 取出对应的RequestUrl &#xff0c;看出来要使用的话得用post请求 #!/usr/bin/env python # -*- coding:utf-8 -*- import requests import json if __name__ "__main__":#1.指定…

SAP物料凭证报表字段调整

业务场景&#xff1a; 报表MB51的输入和输出字段调整&#xff1a; 输入&#xff08;选择界面&#xff09; 输出界面 可以看到在这是没有布局调整的 后台路径&#xff1a; SPRO-物料管理-库存管理和实际库存-报表-定义物料凭证列表的字段选择 事务码&#xff1a;SM30-V_MMI…