2026/3/8 5:53:55
网站建设
项目流程
网站开发 接单,专业返利网站开发,阿里云建站保证销售额,怎么查看小程序的开发公司好#xff0c;这一块非常适合刷算法 面试装硬核 #x1f604; 我给你一套 由浅入深的 Java 位运算算法练习清单#xff0c;每题都配思路 关键位运算点#xff0c;不啰嗦但管用。 Java 位运算算法题目练习#xff08;从入门到进阶#xff09; 目标#xff1a; 一看到题…好这一块非常适合刷算法 面试装硬核我给你一套由浅入深的 Java 位运算算法练习清单每题都配思路 关键位运算点不啰嗦但管用。Java 位运算算法题目练习从入门到进阶目标一看到题目就能条件反射想到「位运算能不能干」一、位运算基础热身必刷1️⃣ 判断奇偶题目判断一个整数是奇数还是偶数booleanisOdd(intn){return(n1)1;} 原理最低位为 1 → 奇数2️⃣ 交换两个数不使用第三个变量voidswap(inta,intb){aa^b;ba^b;aa^b;}⚠ 面试点a、b 指向同一变量会出错3️⃣判断是否是 2 的幂booleanisPowerOfTwo(intn){returnn0(n(n-1))0;}二、位运算经典算法题高频4️⃣ 统计二进制中 1 的个数题目Hamming WeightintcountOnes(intn){intcount0;while(n!0){n(n-1);count;}returncount;} 技巧n (n - 1)每次消掉最右边的 15️⃣ 找出数组中只出现一次的数字其余出现两次intsingleNumber(int[]nums){intres0;for(intn:nums){res^n;}returnres;} 核心相同的数 XOR 00 XOR x x6️⃣ 找出两个只出现一次的数字int[]singleNumberTwo(int[]nums){intxor0;for(intn:nums)xor^n;intlowbitxor(-xor);inta0,b0;for(intn:nums){if((nlowbit)0)a^n;elseb^n;}returnnewint[]{a,b};} 面试杀点lowbit x (-x)三、位运算 数学技巧7️⃣ 加法不使用 -intadd(inta,intb){while(b!0){intcarry(ab)1;aa^b;bcarry;}returna;} 理解^无进位加法 1进位8️⃣ 取绝对值不使用 ifintabs(intx){intmaskx31;return(x^mask)-mask;}四、位运算 状态压缩进阶9️⃣ 子集枚举voidsubsets(intn){for(intmask0;mask(1n);mask){// mask 表示一个子集}} 应用子集状态 DP组合问题 判断两个数是否符号相同booleansameSign(inta,intb){return(a^b)0;}五、位运算面试必背 7 大技巧1️⃣n (n - 1)消除最低位 12️⃣n (-n)提取最低位 13️⃣x ^ x 04️⃣x ^ 0 x5️⃣ 左移相当于乘 26️⃣ 右移相当于除 27️⃣ 位运算常用于状态压缩六、刷题路线建议收藏奇偶 / 2 的幂 ↓ 统计 1 ↓ 异或找单数 ↓ 不使用运算符 ↓ 状态压缩 / 位 DP七、一句话终极总结位运算 用二进制思考问题如果你愿意我可以下一步帮你LeetCode 位运算题 Top 20 精讲位运算在动态规划中的高级用法位运算面试“反套路”题目合集一页纸位运算公式速查表你是偏刷题拿 offer还是算法内功修炼