剑指offer65 不用加减乘除做加法【位运算】
题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。
示例:
1 | 输入: a = 1, b = 1 |
提示:
a,b均可能是负数或 0- 结果不会溢出 32 位整数
解题思路
方法一:位运算
异或操作 0^1=1 1^0=1 0^0=0 1^1=0,那么先进行异或操作可以得出不考虑进位的情况
&与操作,可以得出哪一位发生进位,再将进位左移1位后,再与前面的异或操作的结果进行相加操作。直到无进位情况。
代码实现
1 | class Solution { |
复杂度分析
时间复杂度:O(1)
空间复杂度:O(1)
资料
剑指offer65 不用加减乘除做加法【位运算】
You need to set
install_url to use ShareThis. Please set it in _config.yml.