本文主要是介绍【leetcode74】Sum of Two Integers(不用+,-求两数之和),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述:
不用+,-求两个数的和
原文描述:
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; //carrya ^= b; //add b = c << 1;}return a;}
}
更多的leetcode的经典算法,查看我的leetcode专栏,链接如下:
leetcode专栏
这篇关于【leetcode74】Sum of Two Integers(不用+,-求两数之和)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!