码迷,mamicode.com
首页 > 其他好文 > 详细

剑指offer 面试65题

时间:2018-06-04 14:19:12      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:交换   nbsp   变量   产生   amp   span   解法   solution   pre   

题目65题:不用加减乘除做加法。

解法一:Python特性

# -*- coding:utf-8 -*-
class Solution:
    def Add(self, num1, num2):
        # write code here
        return sum([num1,num2])

解法二:剑指offer思路分析:三步走策略:①只做各位相加不进位(可以用异或来处理,和异或结果相同)②进位:可以想象为两个数先做位与运算,然后左移一位③把前两个步骤的结果相加,重复前两步,直到不产生进位为止。在Python中做位运算,需要做越界检查。

# -*- coding:utf-8 -*-
class Solution:
    def Add(self, num1, num2):
        # write code here
        while num2:
            sum_ = (num1 ^ num2) & 0xffffffff
            carry = ((num1 & num2)<<1)& 0xffffffff
            num1 = sum_
            num2 = carry
        if num1<0x7fffffff:
            return num1
        else:
            return ~(num1^0xffffffff)

 

拓展:不使用新的变量,交换两个变量的值。

①基于加减法     ②基于异或

a=a+b                a=a^b

b=a-b                b=a^b

a=a-b                a=a^b

 

剑指offer 面试65题

标签:交换   nbsp   变量   产生   amp   span   解法   solution   pre   

原文地址:https://www.cnblogs.com/yanmk/p/9132362.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!