《算法闯关指南:优选算法--位运算》--34.判断字符是否唯一,35.丢失的数字

《算法闯关指南:优选算法--位运算》--34.判断字符是否唯一,35.丢失的数字
在这里插入图片描述

🔥草莓熊Lotso:个人主页
❄️个人专栏: 《C++知识分享》《Linux 入门到实践:零基础也能懂》
✨生活是默默的坚持,毅力是永久的享受!


🎬 博主简介:

在这里插入图片描述

文章目录


前言:

聚焦算法题实战,系统讲解三大核心板块:优选算法:剖析动态规划、二分法等高效策略,学会寻找“最优解”。 递归与回溯:掌握问题分解与状态回退,攻克组合、排列等难题。 贪心算法:理解“局部最优”到“全局最优”的思路,解决区间调度等问题 内容以题带点,讲解思路与代码实现,帮助大家快速提升代码能力。

位运算基础前置知识

(


上面提到的5个题大家可以先写一下,其它的公式和推导建议大家记下来。

34. 判断字符是否唯一

题目链接

面试题 01.01. 判定字符是否唯一 - 力扣(LeetCode)

题目描述

在这里插入图片描述

题目示例

在这里插入图片描述

解法(位图的思想):

算法思路:

利用【位图】的思想,每一个【比特位】代表一个【字符,一个 int 类型的变量 32 位足够表示所有的小写字母。比特位里面如果是 0,表示这个字符没有出现过。比特位里面的值是 1,表示该字符出现过。
那么我们就可以用一个【整数】来充当【哈希表】。

C++算法代码:

classSolution{public:boolisUnique(string astr){if(astr.size()>26)returnfalse;int m=0;for(auto& s:astr){if((m>>(s-'a'))&1)returnfalse;else m|=(1<<(s-'a'));}return-1;}};

算法总结&&笔记展示:

笔记字有点丑,大家见谅:

在这里插入图片描述


在这里插入图片描述

35. 丢失的数字

题目链接

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

题目描述

在这里插入图片描述


题目示例

在这里插入图片描述

解法(位运算):

算法思路:

设数组的大小为 n ,那么缺失之前的数就是【0,n】,数组中是在【0,n】中缺失一个数形成的序列
如果我们把数组中的所有数,以及【0,n】中的所有数全部【异或】在一起,那么根据【异或】运算的【消消乐】规律,最终的异或结果应该就是缺失的数~

C++算法代码:

classSolution{public:intmissingNumber(vector<int>& nums){int ret=0;for(auto& n:nums) ret^=n;for(size_t i=0;i<=nums.size();i++) ret^=i;return ret;}};

算法总结&&笔记展示:

笔记字有点丑,大家见谅:

在这里插入图片描述


在这里插入图片描述

结尾:

🍓 我是草莓熊 Lotso!若这篇技术干货帮你打通了学习中的卡点: 👀 【关注】跟我一起深耕技术领域,从基础到进阶,见证每一次成长 ❤️ 【点赞】让优质内容被更多人看见,让知识传递更有力量 ⭐ 【收藏】把核心知识点、实战技巧存好,需要时直接查、随时用 💬 【评论】分享你的经验或疑问(比如曾踩过的技术坑?),一起交流避坑 🗳️ 【投票】用你的选择助力社区内容方向,告诉大家哪个技术点最该重点拆解 技术之路难免有困惑,但同行的人会让前进更有方向~愿我们都能在自己专注的领域里,一步步靠近心中的技术目标! 

结语:本文聚焦位运算算法题实战,通过两道经典例题讲解位图与异或技巧。34题利用位图思想,用整数比特位标记字符出现情况,实现O(1)空间复杂度判断字符唯一性。35题运用异或消消乐特性,通过数组与完整序列异或找出缺失数字。笔记图解辅助理解位运算核心逻辑,适合快速掌握高效解题策略。

✨把这些内容吃透超牛的!放松下吧✨ʕ˘ᴥ˘ʔづきらど

Read more

VsCode远程连接服务器后安装Github Copilot无法使用

VsCode远程连接服务器后安装Github Copilot无法使用

VsCode远程连接服务器后安装Github Copilot无法使用 1.在Vscode的settings中搜索Extension Kind,如图所示: 2.点击Edit in settings.json,添加如下代码: "remote.extensionKind":{"GitHub.copilot":["ui"],"GitHub.copilot-chat":["ui"],} remote.extensionKind 的作用 这是 VS Code 的远程开发配置项,用于控制扩展在远程环境(如 SSH、容器、WSL)中的运行位置。可选值: “ui”:扩展在本地客户端运行 “workspace”:扩展在远程服务器运行 这两个扩展始终在 本地客户端运行,

By Ne0inhk

Git 全套常用命令手册(含日常开发示例)

Git 全套常用命令手册(含日常开发示例) 本文整合 Git 基础命令、分支管理、远程操作、回退重置及日常开发常用操作 目录 1. 基础操作 2. 分支与合并 3. 远程仓库 4. 提交与撤销 5. 标签管理 6. 配置与状态 7. 日常开发常用命令 8. 回退重置示例(上一次提交) 9. Git 操作流程图 10. 快捷总结 基础操作 命令用途示例备注git init初始化本地仓库git init当前目录生成 .git 文件夹git clone克隆远程仓库git clone <url> git clone -b <分支> <

By Ne0inhk

Git BASH安装教程

什么是 Git Bash? 简单来说,Git Bash 是为 Windows 系统提供的模拟 Linux 风格的 Bash 命令行环境,主要用于运行 Git 命令。Bash 是 Linux 和 macOS 用户常用的命令行工具,而 Windows 自带的命令提示符与它不兼容。因此,Git for Windows 软件包中包含了 Git Bash,让你可以在 Windows 上使用熟悉的 Bash 语法来操作 Git 和进行文件管理 第一步:下载 Git for Windows Git Bash 是 Git for Windows

By Ne0inhk
灵活开源低代码平台——Microi吾码(一)

灵活开源低代码平台——Microi吾码(一)

* 开源低代码平台-Microi吾码-平台简介 * 1. 什么是低代码平台? * 2. 它能做什么? * 3. 它的优点是什么? * 平台预览图 * 平台亮点 * 版本区别 * 成功案例 * 源码目录说明 * Microi吾码 - 系列文档 开源低代码平台-Microi吾码-平台简介 技术框架:.NET8 + Redis + MySql/SqlServer/Oracle + Vue2/3 + Element-UI/Element-Plus平台始于2014年(基于Avalon.js),2018年使用Vue重构,于2024年10月29日开源Vue3试用地址(仅查询):https://microi.netVue2传统界面试用地址(可操作数据):https://demo.microi.net/Gitee开源地址:https://gitee.com/ITdos/microi.netGitCode开源地址:https://gitcode.com/microi-net/

By Ne0inhk