题目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

最新文章

  1. 【leetcode】Median of Two Sorted Arrays
  2. UDK游戏开发基础命令
  3. Windows调试学习笔记:(二)WinDBG调试.NET程序示例
  4. JAVA基础知识之JVM-——类初始化
  5. java集合 collection-list-vector
  6. scp 命令使用
  7. 用户组,AD域控简介
  8. [推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到)
  9. Linux环境快速部署Zookeeper集群
  10. String常用的方法
  11. PHP 获取访问来源
  12. CSS备战春招の二
  13. 实验吧_拐弯抹角(url伪静态)&amp;Forms
  14. C语言省略extern的缺陷
  15. 禁用后退键 BackSpace
  16. MySQL大小写敏感
  17. 别人的渗透测试(三)--SQL显错注入
  18. 栈-&gt;栈的应用
  19. SVD及其在推荐系统中的作用
  20. Centos 7 搭建.net web项目

热门文章

  1. Atitit.软件开发的非功能性需求attilax&#160;总结At
  2. java中的参数传递——值传递、引用传递
  3. boost中全局命名锁的使用
  4. UML结构体系简介
  5. js jQuery函数 $.ajax()
  6. CSS学习(二)- 有关 hasLayout 和 BFC
  7. Tomcat运行流程
  8. JavaScript 代码块
  9. Unity官方发布热更新方案性能对照
  10. 爬虫-python调用百度API/requests