《算法闯关指南:优选算法--位运算》--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

前端Base64格式文件上传详解:原理、实现与最佳实践

前端Base64格式文件上传详解:原理、实现与最佳实践

🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Micro麦可乐的博客 🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战 🌺《RabbitMQ》专栏19年编写主要介绍使用JAVA开发RabbitMQ的系列教程,从基础知识到项目实战 🌸《设计模式》专栏以实际的生活场景为案例进行讲解,让大家对设计模式有一个更清晰的理解 🌛《开源项目》本专栏主要介绍目前热门的开源项目,带大家快速了解并轻松上手使用 🍎 《前端技术》专栏以实战为主介绍日常开发中前端应用的一些功能以及技巧,均附有完整的代码示例 ✨《开发技巧》本专栏包含了各种系统的设计原理以及注意事项,并分享一些日常开发的功能小技巧 💕《Jenkins实战》专栏主要介绍Jenkins+Docker的实战教程,让你快速掌握项目CI/CD,是2024年最新的实战教程 🌞《Spring Boot》专栏主要介绍我们日常工作项目中经常应用到的功能以及技巧,代码样例完整 👍《Spring Security》专栏中我们将逐步深入Spring Security的各个

By Ne0inhk

MiniCPM-o-4.5-nvidia-FlagOS实战指南:图文对话助手快速上手(RTX 4090 D适配)

MiniCPM-o-4.5-nvidia-FlagOS实战指南:图文对话助手快速上手(RTX 4090 D适配) 你是不是也遇到过这样的场景:手头有一张复杂的图表,想快速理解其中的数据趋势;或者收到一张产品图片,想了解它的具体功能和特点。过去,我们可能需要自己看图说话,或者找人来帮忙分析。现在,有了多模态AI助手,这些都能一键搞定。 今天要介绍的,就是基于FlagOS软件栈和MiniCPM-o-4.5模型打造的图文对话助手。它最大的特点就是“开箱即用”——特别是针对RTX 4090 D这样的消费级旗舰显卡做了深度适配。你不需要懂复杂的模型部署,也不用担心环境配置,跟着这篇指南,10分钟就能让一个能“看懂”图片并和你“聊天”的AI助手跑起来。 1. 它能做什么?先看几个实际例子 在开始安装之前,我们先看看这个助手到底有多实用。了解它能做什么,你才知道自己需不需要它。 1.1 场景一:快速解读图表和数据 想象一下,你拿到一份满是折线图、柱状图的行业报告。传统方式需要你一行行看数据、分析趋势。现在,

By Ne0inhk
Flutter for OpenHarmony: Flutter 三方库 jaspr 为鸿蒙端开启极速渲染的现代 Web 开发新范式(Dart Web 框架首选)

Flutter for OpenHarmony: Flutter 三方库 jaspr 为鸿蒙端开启极速渲染的现代 Web 开发新范式(Dart Web 框架首选)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 在进行 OpenHarmony 开发时,我们偶尔需要跳出原生的 HAP 容器,寻找更轻量、更适合在移动端 Web 加载的方案。虽然 Flutter Web 极其强大,但其生成的 Canvas/Wasm 产物体积巨大,在鸿蒙系统加载较慢。是否存在一种方案,既能使用 Dart 的声明式开发体验,又能产出纯正、轻量的 HTML/CSS/JS 节点? jaspr 就是这个问题的终极答案。它是一个模仿 Flutter 语法、但专注于渲染原生 Web DOM 的现代框架。通过 Jaspr,鸿蒙开发者可以利用熟悉的 Widget、Component 和生命周期,

By Ne0inhk
禹神:一小时快速上手Electron,前端Electron开发教程,笔记。一篇文章入门Electron

禹神:一小时快速上手Electron,前端Electron开发教程,笔记。一篇文章入门Electron

⚠️注意: 1️⃣原视频打包时,是使用electron-builder打包,使用electron-builder打包,打包时要访问github需要修仙术才能访问。 2️⃣本笔记,使用Electron Forge进行打包,使用Electron Forge不需要访问github更友好。在Electron 官网中也推荐使用这种方式 👉Electron 一、Electron是什么 简单的一句话,就是用html+css+js+nodejs+(Native Api)做兼容多个系统(Windows、Linux、Mac)的软件。 官网解释如下(有点像绕口令): Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium 和 Node.js 到 二进制的 Electron 允许您保持一个 JavaScript 代码代码库并创建 在Windows上运行的跨平台应用 macOS和Linux—

By Ne0inhk