题目

写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。

数据范围:两个数都满足 −10≤n≤1000
进阶:空间复杂度 O(1),时间复杂度 O(1)

示例1

输入:1,2

返回值:3

示例2

输入:0,0

返回值:0


思路1:堪称一绝哈哈哈

求2个数的和,不用加减乘除,但是能用++和--,所以可以以0为界,将其中一个数++至0或者--至0,另一个数做相反的操作,就能得到结果。


代码1

public class Solution {public int Add(int num1,int num2) {while(num2 != 0){if(num2 > 0){num2 --;num1 ++;}if(num2 < 0){num2 ++;num1 --;}}return num1;}
}

思路2

不能用四则运算,那就只能利用位运算进行计算。

两个数二进制位相异或后的结果,是两数相加的结果(不考虑进位)

两个数二进制位相左移一位的结果,是两数相加后的结果(只考虑进位)

num1+num2=循环求(本位+进位)的值,直到不再产生进位。

十进制计算:例如 27+85=112

1)对各位只做相加不进位,结果为2;

2)考虑进位,7+5中有进位,进位的值是10;2+8有进位,进位的值是100;

3)将前面的三个结果相加,得到的结果为112。

二进制计算:例如 7+4=11,7的二进制为0111,4的二进制为0100

1)只做相加不进位,相当于异或操作:0111 ^ 0100 = 0011;

2)考虑进位,相当于与操作:0111 & 0100 = 0100,有进位,因此,将结果向前进位,得到1000;

3)因为存在进位,所以将以上得到的两个结果,重复步骤 1)和步骤 2),直到与操作不产生进位,此时步骤 1)得到的结果即为原始的两个数之和。

public class Solution {public int Add(int num1, int num2) {while (num2 != 0) {int temp = num1 ^ num2;num2 = (num1 & num2) << 1;num1 = temp;}return num1;}
}

10-不用加减乘除做加法相关推荐

  1. 剑指Offer_编程题 不用加减乘除做加法

    不用加减乘除做加法 时间限制:1秒 空间限制:32768K 热度指数:81997 算法知识视频讲解 题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 首先,十进 ...

  2. 《剑指offer》-- 构建乘积数组、求1+2+3+...+n、不用加减乘除做加法、包含min函数的栈、用两个栈实现队列

    一.构建乘积数组: 1.题目: 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*. ...

  3. 如何用java实现加减_用Java实现不用加减乘除做加法操作

    面试题1:不用加减乘除,求两个整数的和. import java.util.Scanner; public class GetSum { /** * 不用加减乘除做加法: * 十进制中的18和7相加: ...

  4. java 加法不用_【Java】 剑指offer(65) 不用加减乘除做加法

    本文参考自<剑指offer>一书,代码采用Java语言. 题目 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.×.÷四则运算符号. 思路 对数字做运算,除了四则运算外,只剩下位 ...

  5. [剑指offer]面试题47:不用加减乘除做加法

    面试题47:不用加减乘除做加法 题目:写一个函数,求两个整数之和,要求在函数体内不得使用+.-.×.÷四则运算符号. 代码如下: int add(int num1, int num2) {int su ...

  6. 【LeetCode】剑指 Offer 65. 不用加减乘除做加法

    [LeetCode]剑指 Offer 65. 不用加减乘除做加法 文章目录 [LeetCode]剑指 Offer 65. 不用加减乘除做加法 一.位运算 一.位运算 本题考察对位运算的灵活使用,即使用 ...

  7. 剑指offer不用加减乘除做加法_剑指Offer-不用加减乘除做加法

    题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 思路 思路一: 位运算 思路二: 递归 思路三: 调用Integer的sum方法 思路四: 自增自减 代码实现 ...

  8. Python 解决面试题47 不用加减乘除做加法

    在看<剑指Offer>过程中,面试题47不用加减乘除做加法,给出的思路是使用二进制的异或以及与运算,总之就是使用二进制.但是在使用Python实现的过程中,对于正整数是没有问题的,但是对于 ...

  9. 剑指offer——面试题47:不用加减乘除做加法

    剑指offer--面试题47:不用加减乘除做加法 Solution1: 学习之 书上的思路就很好啊~ class Solution {public:int Add(int num1, int num2 ...

  10. 剑指 Offer 65. 不用加减乘除做加法(位运算、递归、迭代)

    一.题目 剑指 Offer 65. 不用加减乘除做加法 题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用 "+"."-"."*" ...

最新文章

  1. 区块链技术入门,都涉及哪些编程语言?
  2. android md日期选择器,移动端日期选择
  3. PE结构基址重定位表
  4. NYOJ 303 序号转换 数学题
  5. CTF Geek Challenge——第十一届极客大挑战Web Write Up
  6. RAC (双节点) + 单实例 DATAGUARD 安装遇到的问题处理
  7. 如何将本地jar包放入本地maven仓库和远程私服仓库
  8. 1.1图像处理的概念
  9. java模式之装饰模式
  10. 通过javascript动态显示界面控件
  11. python压缩和读取.tar.bz2格式的压缩包
  12. linux 循环小时,shell脚本日期遍历(按天按小时)
  13. JVM调优总结(转载)
  14. Python学习-第三天-面向对象编程基础
  15. gp数据库 创建数据库 创建表 分区
  16. 设计模式 英文名Design Pattern
  17. H5纯页面方式手机端实现“扫一扫”功能(不是直接调起摄像头)
  18. 7-33 电话聊天狂人
  19. 3D Dirichlet Free-Form Deformation(三维Dirichlet自由变形)
  20. 12年来最大飞跃!黄仁勋发布史上最强GPU,世界首个实时光线追踪新一代图灵架构...

热门文章

  1. mysql复制数据到同一张表
  2. 高精度ua级恒流源_高精度低温漂CMOS电流源的设计
  3. 【愚公系列】2022年02月 微信小程序-数据绑定
  4. 一、C++面向对象高级编程(上) (侯捷)
  5. VMware中GPU虚拟化的三种模式(1)–vSGA
  6. Scratch软件编程等级考试一级——20200913
  7. 使用python-docx将爬取结果保存到word
  8. 贝壳找房2018算法笔试
  9. 荣耀20公测鸿蒙,荣耀 20、30 系列等机型,将开始逐步适配华为鸿蒙系统
  10. cocos2d-x 音乐音效