牛客-剑指offer系列题解:不用加减乘除做加法

记录刷题的过程。牛客和力扣中都有相关题目,这里以牛客的题目描述为主。该系列默认采用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)

发布了61 篇原创文章 · 获赞 10 · 访问量 2893

猜你喜欢

转载自blog.csdn.net/weixin_42042056/article/details/105739276