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