记录刷题的过程。牛客和力扣中都有相关题目,这里以牛客的题目描述为主。该系列默认采用python语言。
1、问题描述:
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
2、数据结构:
位运算
3、题解:
方法1:
# -*- coding:utf-8 -*-
class Solution:
def Add(self, num1, num2):
# write code here
x = 0xFFFFFFFF
a,b = num1 ^ num2,(num1 & num2) <<1
while b != 0:
a,b = (a ^ b) & x,(a & b) << 1
return a if a <= 0x7fffffff else ~(a ^ x)
方法2:
# -*- coding:utf-8 -*-
class Solution:
def Add(self, num1, num2):
# write code here
x = 0xffffffff
a, b = num1 & x, num2 & x
while b != 0:
a, b = (a ^ b), (a & b) << 1 & x
return a if a <= 0x7fffffff else ~(a ^ x)
4、复杂度分析:
方法1与方法2:
时间复杂度:O(1)
空间复杂度:O(1)