【leetcode74】Sum of Two Integers(不用+,-求两数之和)
2016-07-30 16:41
453 查看
题目描述:
不用+,-求两个数的和
原文描述:
Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -.Example:
Given a = 1 and b = 2, return 3.方法一:用位运算模拟加法
思路1:
异或又被称其为“模2加法“设置变量recipe模拟进位数字,模拟加法的实现过程
代码:
public class Solution { public int getSum(int a, int b) { int r = 0, c = 0, recipe = 1; while ((a | b | c) != 0) { if (((a ^ b ^ c) & 1) != 0) r |= recipe; recipe <<= 1; c = (a & b | b & c | a & c) & 1; a >>>= 1; b >>>= 1; } return r; } }
方法二:异或求值
思路二:
a^b,求得结果a&b,求得进位
相加
代码:
public class Solution { public int getSum(int a, int b) { while (b != 0) { int c = a & b; //carry a ^= b; //add b = c << 1; } return a; } }
更多的leetcode的经典算法,查看我的leetcode专栏,链接如下:
leetcode专栏我的微信二维码如下,欢迎交流讨论
欢迎关注《IT面试题汇总》微信订阅号。每天推送经典面试题和面试心得技巧,都是干货!
微信订阅号二维码如下:
相关文章推荐
- 【leetcode74】Sum of Two Integers(不用+,-求两数之和)
- 【leetcode74】Sum of Two Integers(不用+,-求两数之和)
- 【leetcode74】Sum of Two Integers(不用+,-求两数之和)
- 【leetcode74】Sum of Two Integers(不用+,-求两数之和)
- LeetCode371——Sum of Two Integers(不用+)
- [LeetCode] Sum of Two Integers 两数之和
- leetcode NO.371 sum of two integers
- [leetcode] Sum of Two Integers--用位运算实现加法运算
- 【Leetcode】Sum of Two Integers
- Leetcode: Sum of Two Integers
- [LeetCode] Sum of Two Integers
- leetcode371-----Sum of Two Integers
- LeetCode - 371 - Sum of Two Integers
- LeetCode——Sum of Two Integers
- LEETCODE--Sum of Two Integers
- leetcode 371 Sum of Two Integers C++
- Leetcode371: Sum of Two Integers
- LeetCode|Sum of Two Integers
- [Leetcode] Sum of Two Integers
- LeetCode之Sum of Two Integers