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


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


🎬 博主简介:


文章目录


前言:

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


36. 两个整数之和

题目链接

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

题目描述

题目示例

解法(位运算):

算法思路:

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

C++算法代码:

cpp 复制代码
class Solution {
public:
    int getSum(int a, int b) {
        while(b)
        {
            int x=a^b;//先算出无进位相加的结果
            unsigned int carry=(unsigned int)(a&b)<<1;//再算出进位
            a=x;
            b=carry;
        }
        return a;
    }
};

算法总结&&笔记展示:

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


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

题目链接

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

题目描述

题目示例

解法(比特位计数):

算法思路:

设要找的数为 ret

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

这样我们通过 ret 的每一个比特位上的值,就可以将 ret 还原出来。

C++算法代码:

cpp 复制代码
class Solution {
public:
    int singleNumber(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;
    }
};

算法总结&&笔记展示:

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


结尾:

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

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

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

相关推荐
努力学习的小廉8 分钟前
【QT(七)】—— 常用控件(四)
开发语言·qt
无限码力8 分钟前
科大讯飞秋招笔试真题 - 字符拼接 & 字典序最小的字符串拼接 & 圆心覆盖
算法·秋招·科大讯飞·科大讯飞笔试真题
Lips61111 分钟前
第四章 决策树
算法·决策树·机器学习
CoderCodingNo13 分钟前
【GESP】C++六级考试大纲知识点梳理, (3) 哈夫曼编码与格雷码
开发语言·数据结构·c++
YuTaoShao21 分钟前
【LeetCode 每日一题】2053. 数组中第 K 个独一无二的字符串
算法·leetcode·职场和发展
froginwe1123 分钟前
C 标准库 - `<errno.h>`
开发语言
鹿角片ljp32 分钟前
Java IO流案例:使用缓冲流恢复《出师表》文章顺序
java·开发语言·windows
纵有疾風起42 分钟前
【Linux 系统开发】基础开发工具详解:自动化构建、版本控制与调试器开发实战
linux·服务器·开发语言·c++·经验分享·开源·bash
D_evil__43 分钟前
【Effective Modern C++】第一章 类型推导:3. 理解 decltype
c++
一只小bit44 分钟前
Qt 文件:QFile 文件读写与管理教程
前端·c++·qt·gui