【力扣】配对交换

这篇博客介绍了如何使用位运算高效地交换整数的奇数位和偶数位。通过设置特定的二进制掩码a和b,结合与运算(&)和异或运算(|),可以在较少的指令下完成位交换。示例展示了对于输入数值2和3的位交换过程,解题代码中定义的函数`exchangeBits(num)`实现了这一功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目

配对交换。编写程序,交换某个整数的奇数位和偶数位,尽量使用较少的指令(也就是说,位0与位1交换,位2与位3交换,以此类推)。

示例1:
输入:num = 2(或者0b10) 输出 1 (或者 0b01)
示例2:
输入:num = 3 输出:3 提示:

num的范围在[0, 2^30 - 1]之间,不会发生整数溢出。

分析

这个题目考察的是基本的位运算,与运算 &,或运算 |
思路就是:先设定两个特殊的二进制数
a:B1010101010101010101010101010101
b:B10101010101010101010101010101010
,a和b分别对输入的num进行与运算 &,将num中的偶数位和奇数位取出来,将取出来的两个值进行或运算进行合并,得到最后的结果。

function exchangeBits(num: number): number {
    let a = 0xaaaaaaaa;
    let b = 0x55555555;
    return (a&num)>>1|(b&num)<<1;
};
### 如何使用力扣平台 #### 平台概述 力扣是一个专注于算法和数据结构练习的学习平台,提供了丰富的题目资源以及在线评测功能。通过该平台,用户能够针对不同难度级别的题目进行训练,从而提高自身的编程能力和逻辑思维能力。 #### 刷题策略建议 为了高效利用时间并取得更好的学习效果,在力扣上刷题时可以选择特定范围内的高质量题目集中攻克。例如,优先完成前200道经典题目是非常明智的选择[^1]。这些题目涵盖了大部分基础知识点,并且与HOT 100榜单中的高频考点高度吻合。 #### 数据结构专项练习 对于某些具体的数据结构领域如链表操作,则可以通过专门挑选一系列相关联的经典习题来进行深入研究。比如下面列举了一些典型的关于链表处理方面的挑战编号列表供参考[^2]: - 反转单链表 (No. 206) - 移除链表元素 (No. 203) #### 实际案例解析 以一道具体的加油站在环路上行驶场景为例说明如何应用动态规划或者模拟法解决问题。假设存在一组加油站及其对应的燃油供应量数组gas[]及消耗成本数组cost[], 我们要找到一个起点使得车辆能顺利完成一圈旅行而不会中途耗尽燃料。以下是基于上述描述的一个解决方案思路[^3]: ```python def canCompleteCircuit(gas, cost): n = len(gas) total_tank, curr_tank = 0, 0 starting_station = 0 for i in range(n): total_tank += gas[i] - cost[i] curr_tank += gas[i] - cost[i] if curr_tank < 0: starting_station = i + 1 curr_tank = 0 return starting_station if total_tank >= 0 else -1 ``` #### 职业发展导向 另外值得注意的是,除了个人兴趣驱动外,很多人也会因为求职需求加入到每日打卡刷题大军之中。确实如此,无论是BAT还是其他知名互联网公司都会把候选人的算法功底当作重要考核指标之一[^4]。因此合理安排复习计划显得尤为重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值