剑指offer 面试65题

Posted MKYAN

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer 面试65题相关的知识,希望对你有一定的参考价值。

题目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题的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer-面试题65-不用加减乘除做加法-位运算

剑指Offer名企面试官精讲典型编程题pdf

剑指Offer名企面试官精讲典型编程题pdf

乱序版 ● 剑指offer每日算法题打卡题解——位运算 (题号15,16,65)

剑指Offer学习所有面试题汇总

剑指offer系列——剑指 Offer 65. 不用加减乘除做加法