《算法闯关指南:优选算法--位运算》--36.两个整数之和,37.只出现一次的数字 ||

《算法闯关指南:优选算法--位运算》--36.两个整数之和,37.只出现一次的数字 ||
在这里插入图片描述

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


🎬 博主简介:

在这里插入图片描述

文章目录


前言:

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

36. 两个整数之和

题目链接

371. 两整数之和 - 力扣(LeetCode)

题目描述

在这里插入图片描述


题目示例

在这里插入图片描述

解法(位运算):

算法思路:

  • 异或 ^ 运算本质是【无进位加法】
  • 按位与 & 操作能够得到【进位】
  • 然后一直循环,直到【进位】变成 0 为止

C++算法代码:

classSolution{public:intgetSum(int a,int b){while(b){int x=a^b;//先算出无进位相加的结果unsignedint carry=(unsignedint)(a&b)<<1;//再算出进位 a=x; b=carry;}return a;}};

算法总结&&笔记展示:

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

在这里插入图片描述


在这里插入图片描述

37.只出现一次的数字 ||

题目链接

137. 只出现一次的数字 II - 力扣(LeetCode)

题目描述

在这里插入图片描述


题目示例

在这里插入图片描述

解法(比特位计数):

算法思路:

设要找的数为 ret
由于整个数组中,需要找的元素只出现了【一次】,其余的数都出现【三次】,因此我们可以用根据所有数的【某一个比特位】的总和 %3 的结果,快速定位到 ret 上的【一个比特位上】的值是 0 还是 1
这样我们通过 ret 的每一个比特位上的值,就可以将 ret 还原出来。

C++算法代码:

classSolution{public:intsingleNumber(vector<int>& nums){int ret=0;for(int i=0;i<32;i++)//依次去修改ret中的每一位{int sum=0;for(auto x:nums)//计算nums数组中所有数第i位的和if((x>>i)&1) sum++; sum%=3;if(sum==1) ret|=(1<<i);}return ret;}};

算法总结&&笔记展示:

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

在这里插入图片描述
在这里插入图片描述

结尾:

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

结语:本文精选两道经典位运算算法题,深入解析解题思路与实现代码。第36题通过异或和按位与操作实现无进位加法,循环处理进位直至为零,高效求解两数之和(371. 两整数之和)。第37题利用比特位计数技术,统计所有数字各二进制位出现次数,模3结果定位唯一出现一次的数字(137. 只出现一次的数字 II)。代码均附详细注释,配以手写笔记图解关键步骤,帮助读者掌握位运算核心技巧。

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

Read more

排序算法指南:快速排序(非递归)

排序算法指南:快速排序(非递归)

前言:          本文将通过图解与代码相结合的方式,详细介绍快速排序的非递归实现方法。虽然前文已展示递归实现方案,但在实际面试中,面试官更倾向于考察非递归版本的实现。这种实现方式不仅能加深对算法的理解,还能展现应聘者对栈结构的掌握程度。          一、非递归实现快排的思路          1.1核心原理:手动模拟栈                   在标准的递归快速排序中,当我们写下 quickSort(a,left, right) 时,系统会自动分配一块内存(函数调用栈)来记住当前的 left 和 right 是多少,以及函数执行完后该回到哪里。         在非递归版本中,我们不需要系统帮忙,而是自己创建一个栈(Stack)数据结构。          1.2核心操作:用栈存取数组区间          ① 向栈中存储操作:存储每一次需要排序的子数组的起止下标(begin,end)。                                  由于栈的特性是先进后出,我们优先处理左区间,再处理右区间,类似于二叉树的前序操

By Ne0inhk
Redis高级数据结构实战:从Stream到HyperLogLog的深度解析

Redis高级数据结构实战:从Stream到HyperLogLog的深度解析

目录 📖 摘要 🎯 第一章:为什么Redis高级特性如此重要? 1.1 我的Redis踩坑史 1.2 Redis vs 其他中间件的实战对比 1.3 Python + Redis的黄金组合 🏗️ 第二章:Redis Stream - 轻量级消息队列的王者 2.1 Stream设计哲学:为什么不是List/PubSub? 2.2 Stream消费组架构设计 📊 第三章:HyperLogLog - 海量基数统计的魔法 3.1 HyperLogLog算法原理 3.2 HyperLogLog实战:实时UV统计系统 🔒 第四章:分布式锁 - 高并发下的数据安全 4.1 分布式锁设计模式 4.2 分布式锁实战:

By Ne0inhk
Flutter 三方库 linalg 的鸿蒙化适配指南 - 掌控高性能线性代数、矩阵运算实战、鸿蒙级算法中枢

Flutter 三方库 linalg 的鸿蒙化适配指南 - 掌控高性能线性代数、矩阵运算实战、鸿蒙级算法中枢

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 linalg 的鸿蒙化适配指南 - 掌控高性能线性代数、矩阵运算实战、鸿蒙级算法中枢 在鸿蒙跨平台应用处理 3D 图形变换、复杂的信号处理(DSP)或是端侧的小型机器学习模型时,高效的矩阵(Matrix)与向量(Vector)运算是一切算法的基石。如果你不想手写枯燥且易错的嵌套循环。今天我们要深度解析的 linalg——一个纯 Dart 实现的、遵循线性代数标准的专业级数学库,正是帮你搭建“算法堡垒”的数字基石。 前言 linalg 提供了一套直观且功能完备的线性代数 API。它不仅支持基础的向量加减、点积(Dot Product)和叉积(Cross Product),还涵盖了复杂的矩阵乘法、转置(Transpose)以及行列式计算。在鸿蒙端项目中,

By Ne0inhk

从零到项目:免费Python网站实战学习指南

快速体验 1. 打开 InsCode(快马)平台 https://www.inscode.net 2. 输入框内输入如下内容: 开发一个Python学习项目展示平台,功能包括:1. 分阶段Python学习路线图;2. 每个阶段配套的免费学习资源链接;3. 实战项目案例库(如爬虫、数据分析等);4. 项目代码在线运行环境;5. 学习成果分享社区。后端使用Django,前端使用React,部署在云服务器上。 1. 点击'项目生成'按钮,等待项目生成完整后预览效果 最近在自学Python的过程中,发现很多朋友都面临同样的困惑:网上资源太分散,学习路线不清晰,学完基础语法后不知道如何实战。于是我用Django+React开发了一个Python学习项目展示平台,把整个学习过程梳理成可落地的路径。下面分享下这个项目的实现思路和经验。 1. 项目整体架构设计 这个平台主要解决三个核心问题:学习路径规划、资源整合和实战演练。

By Ne0inhk