1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 【LeetCode笔记】剑指 Offer 65. 不用加减乘除做加法(Java 位运算 二刷)

【LeetCode笔记】剑指 Offer 65. 不用加减乘除做加法(Java 位运算 二刷)

时间:2019-05-25 01:08:20

相关推荐

【LeetCode笔记】剑指 Offer 65. 不用加减乘除做加法(Java 位运算 二刷)

文章目录

题目描述思路 & 代码二刷

题目描述

讲道理,感觉算有点难度的题目了= =,还是需要时不时看看。

思路 & 代码

正负数情况可以不考虑(补码)核心:加法 = 进位和 + 非进位和关于位运算符的选择,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);}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。