文章目录
题目描述思路 & 代码二刷题目描述
讲道理,感觉算有点难度的题目了= =,还是需要时不时看看。思路 & 代码
正负数情况可以不考虑(补码)核心:加法 = 进位和 + 非进位和关于位运算符的选择,leetcode 题解区中 Krahets 大佬的图写很好⬇️class Solution {// 用递归来做,会很好理解~// 加法 = 进位和 + 非进位和// 进位和 = & << ,非进位和 = ^// 负数考虑:没关系,补码优势在于正负数不需要特殊考虑public int add(int a, int b) {// 进位和为0时,结束if(b == 0){return a;}// (非进位和,进位和)return add(a ^ b, (a & b) << 1);}}
无注释版
class Solution {public int add(int a, int b) {if(b == 0){return a;}return add(a ^ b, (a & b) << 1);}}
二刷
核心:递归 + 位运算思路:记录结果表,推出结论class Solution {public int add(int a, int b) {if(b == 0) {return a;}return add(a ^ b, (a & b) << 1);}}