当前位置: 首页 > news >正文

位运算题目-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};}
}

 

 

相关文章:

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

这里是Themberfue 上一篇文章讲完了常见位运算的技巧以及总结 那么本章则通过五道题来运用这些技巧 判定字符是否唯一 题目解析 本题要求判断给定字符串中的字符是否唯一&#xff0c;也就是每个字符是否只出现一次 算法讲解 本题用哈希表遍历每一个字符也可以解决 如果这题使…...

复合泊松过程

复合泊松过程的均值、方差与特征函数 复合泊松过程的定义 复合泊松过程 ( Y(t) ) 是一种常见的随机过程&#xff0c;通常定义为&#xff1a; Y ( t ) ∑ k 1 N ( t ) X k Y(t) \sum_{k1}^{N(t)} X_k Y(t)k1∑N(t)​Xk​ 其中&#xff1a; ( N(t) ) 是一个强度为 ( \lambd…...

[week1] newstar ctf ezAndroidStudy

本题主要考查对 APK 基本结构的掌握 查看 AndroidManifest.xml 可以发现 activity 只有 Homo 和 MainActivity 我们用 Jadx 打开 work.pangbai.ezandroidstudy.Homo 就可以获得 flag1 打开 resources.arsc/res/value/string.xml 搜索 flag2 即可 按描述到 /layout/activity_ma…...

TCP——Socket

应用进程只借助Socket API发和收但是不关心他是怎么进行传和收的 数据结构 图示Socket连接 捆绑属于隐式捆绑...

OpenStack服务Swift重启失效(已解决)

案例分析Swift重启失效 1. 报错详情 在重新启动 VMware 虚拟机后&#xff0c;我们发现 OpenStack 的 Swift 服务出现了 503 Service Unavailable 错误。经过排查&#xff0c;问题根源在于 Swift 服务所使用的存储挂载是临时挂载&#xff0c;而非永久挂载。 Swift 服务依赖于…...

System.Text.Json类库进行json转化时ValueKind:Object问题

当你的使用的Json库是System.Text.Json&#xff0c;而不是Newtonsoft.Json库的时候&#xff0c;你可能遇到以下问题及其解决办法。通常的解决办法是进行一些对应的配置。此外就需要根据情况使用自定义转换器实现你的需求。以下是通常遇到的使用自定义转换器解决的例子: Q1.当遇…...

免费Excel工作表同类数据合并工具

下载地址&#xff1a;https://pan.quark.cn/s/81b1aeb45e4c 在 Excel 表格里&#xff0c;当我们试图手动将多行同类数据合并为一行时&#xff0c;会遭遇诸多棘手的困难以及繁杂的操作流程。在确定哪些数据属于可合并的同类数据时&#xff0c;单纯依靠人工进行对比&#xff0c;极…...

如何在算家云搭建Video-Infinity(视频生成)

一、模型介绍 Video-Infinity是一个先进的视频生成模型&#xff0c;使用多个 GPU 快速生成长视频&#xff0c;无需额外训练。它能够基于用户提供的文本或图片提示&#xff0c;创造出高质量、多样化的视频内容。 二、模型搭建流程 1.大模型 Video-Infinity 一键使用 基础环境…...

LeetCode搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2 …...

UE5学习笔记24-添加武器弹药

一、给角色的武器添加弹药 1.创建界面&#xff0c;根据笔记23的界面中添加 2.绑定界面控件 UPROPERTY(meta (Bindwidget))UTextBlock* WeaponAmmoAmount;UPROPERTY(meta (Bindwidget))UTextBlock* CarriedAmmoAmount; 3.添加武器类型枚举 3.1创建武器类型枚举头文件 3.2创建文…...

限制游客在wordpress某分类下阅读文章的数量

在WordPress中实现某个分类下的内容限制游客只能阅读前5篇文章&#xff0c;注册用户可以阅读更多文章的功能&#xff0c;可以通过以下步骤来完成&#xff1a; 1. 安装和激活插件 首先&#xff0c;你可以使用一个插件来简化这个过程。一个常用的插件是 “MemberPress” 或 “R…...

Oracle云主机申请和使用教程:从注册到SSH连接的全过程

今天我要和大家分享如何成功申请Oracle云主机,并进行基本的配置和使用。我知道很多同行的朋友在申请Oracle云主机时都遇到了困难&#xff08;疑惑abc错误&#xff09;,可能试了很多次都没有成功。现总结一下这些年来的一些注册流程经验&#xff0c;或许你们也能成功申请到自己的…...

芯知识 | NVH-FLASH语音芯片支持平台做语音—打造音频IC技术革新

随着科技的飞速发展&#xff0c;人们对于电子产品的音频性能要求越来越高。在这种背景下&#xff0c;NVH-FLASH系列语音芯片应运而生&#xff0c;作为音频IC领域的一次重大技术革新&#xff0c;NVH-FLASH系列语音芯片凭借其卓越的性能与灵活的支持平台&#xff0c;正逐步引领着…...

机器学习——解释性AI与可解释性机器学习

解释性AI与可解释性机器学习: 理解机器学习模型背后的逻辑 随着人工智能技术的广泛应用&#xff0c;机器学习模型越来越多地被用于决策过程。然而&#xff0c;这些模型&#xff0c;尤其是深度学习模型&#xff0c;通常被视为“黑箱”&#xff0c;难以理解其背后的决策逻辑。解…...

中国全国省市区县汇总全国省市区json省市区数据2024最新

简介 包含全国省市区县数据,共3465个。 全国总共有23个省、5个自治区、4个直辖市、2个特别行政区。 ——更新于2024年10月16日,从2017年开始,已经更新坚持7年 从刚开始1000个左右的城市json,到现在全国省市区县3465个。 本人感觉应该是目前最完善的~ 每年都在更新中,…...

[Linux#67][IP] 报头详解 | 网络划分 | CIDR无类别 | DHCP动态分配 | NAT转发 | 路由器

目录 一. IP协议头格式 学习任何协议前的两个关键问题 IP 报头与有效载荷分离 分离方法 为什么需要16位总长度 如何交付 二. 网络通信 1.IP地址的划分理念 2. 子网管理 3.网络划分 CIDR&#xff08;无类别域间路由&#xff09; 目的IP & 当前路由器的子网掩码 …...

路由器原理和静态路由配置

一、路由器的工作原理 根据路由表转发数据 接收数据包→查看目的地址→与路由表进行匹配找到转发端口→转发到该端口 二、路由表的形成 它是路由器中维护的路由条目的集合&#xff0c;路由器根据路由表做路径选择&#xff0c;里面记录了网段ip地址和对应下一跳接口的接口号。…...

UE5 使用Animation Budget Allocator优化角色动画性能

Animation Budget Allocator是UE内置插件&#xff0c;通过锁定动画系统所占CPU的预算&#xff0c;在到达预算计算量时对动画进行限制与优化。 开启Animation Budget Allocator需要让蒙皮Mesh使用特定的组件&#xff0c;并进行一些编辑器设置即可开启。 1.开启Animation Budget…...

Element UI 组件库详解:从入门到精通

在追求统一且流畅的用户体验时&#xff0c;开发者们常常选择使用 UI 组件库来加快开发速度。Element UI&#xff0c;这个基于 Vue.js 的组件库&#xff0c;提供了大量界面组件&#xff0c;极大地提升了前端开发的效率。本文将指导您如何开始使用 Element UI 组件库&#xff0c;…...

JavaScript 事件循环(EventLoop) —— 浏览器 Node

一、事件循环的本质 本质&#xff1a;运行时对 JS 脚本的调度方式就叫做事件循环. 对于 浏览器 而言&#xff0c;需要考虑用户交互、UI渲染、脚本运行、网络请求等操作&#xff0c;这些操作必然都依赖于事件去执行&#xff0c;因此&#xff0c;为了协调事件必须要使用事件循环…...

深度解析 WebMCP —— 开启浏览器端的 AI 智能体新时代

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...

QuickBMS游戏资源提取指南:从逆向工程到模组制作的全能工具

QuickBMS游戏资源提取指南&#xff1a;从逆向工程到模组制作的全能工具 【免费下载链接】QuickBMS QuickBMS by aluigi - Github Mirror 项目地址: https://gitcode.com/gh_mirrors/qui/QuickBMS QuickBMS是一款功能强大的跨平台游戏资源提取工具&#xff0c;通过简单的…...

Word论文写作福音:3分钟搞定APA第7版参考文献格式配置

Word论文写作福音&#xff1a;3分钟搞定APA第7版参考文献格式配置 【免费下载链接】APA-7th-Edition Microsoft Word XSD for generating APA 7th edition references 项目地址: https://gitcode.com/gh_mirrors/ap/APA-7th-Edition 还在为论文参考文献格式发愁吗&#…...

音频格式解密实战:QMCDecode让加密音乐重获自由

音频格式解密实战&#xff1a;QMCDecode让加密音乐重获自由 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac&#xff0c;qmc0,qmc3转mp3, mflac,mflac0等转flac)&#xff0c;仅支持macOS&#xff0c;可自动识别到QQ音乐下载目录&#xff0c;默认转换结果…...

智能公式+自动处理,SpreadJS AI 插件开启表格数据计算及处理新时代

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...

G-Helper华硕笔记本优化指南:告别臃肿控制软件,3步打造高效设备

G-Helper华硕笔记本优化指南&#xff1a;告别臃肿控制软件&#xff0c;3步打造高效设备 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, …...

OpenDrop用户画像分析:揭秘不同用户群体的文件传输习惯与使用场景

OpenDrop用户画像分析&#xff1a;揭秘不同用户群体的文件传输习惯与使用场景 【免费下载链接】opendrop An open Apple AirDrop implementation written in Python 项目地址: https://gitcode.com/gh_mirrors/op/opendrop OpenDrop是一个开源Apple AirDrop实现&#xf…...

倾角传感器在工业自动化中的实战应用:以机械臂和桥梁监测为例

倾角传感器在工业自动化中的实战应用&#xff1a;以机械臂和桥梁监测为例 工业自动化领域对设备姿态的精确感知有着近乎苛刻的要求。想象一下&#xff0c;一台正在焊接汽车底盘的六轴机械臂&#xff0c;如果末端执行器出现0.5度的角度偏差&#xff0c;就可能导致焊缝质量不合格…...

效率提升:用快马ai一键生成直播数据监控与管理面板代码

最近在开发直播后台管理工具时&#xff0c;发现很多功能模块其实都有固定套路。比如数据看板、弹幕管理这些常见需求&#xff0c;每次都要从零开始写类似的代码结构&#xff0c;特别浪费时间。后来尝试用InsCode(快马)平台的AI生成功能&#xff0c;效率直接翻倍。 1. 为什么需…...

S2-Pro卷积神经网络原理可视化教学工具开发

S2-Pro卷积神经网络原理可视化教学工具开发 1. 效果亮点开场 想象一下&#xff0c;当你第一次学习卷积神经网络(CNN)时&#xff0c;如果能直观看到每一层卷积核如何工作、特征图如何变化、网络如何逐步学习&#xff0c;那该多好。这正是我们开发的S2-Pro教学工具要解决的问题…...