题目描述

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

思路

思路一:

位运算

思路二:

递归

思路三:

调用Integer的sum方法

思路四:

自增自减

代码实现

package Other;

/**

* 不用加减乘除做加法

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

* 思路:位运算

* 1.两个数异或:相当于每一位相加,而不考虑进位;

* 2.两个数相与,并左移一位:相当于求得进位;

* 3.将上述两步的结果相加

*/

public class Solution14 {

public static void main(String[] args) {

Solution14 solution14 = new Solution14();

System.out.println(solution14.Add_4(2, -3));

}

/**

* 自增自减

*

* @param num1

* @param num2

* @return

*/

public int Add_4(int num1, int num2) {

if (num1 < 0) {

while (num1++ != 0) {

num2--;

}

} else if (num1 > 0) {

while (num1-- != 0) {

num2++;

}

}

return num2;

}

/**

* 调用Integer的sum方法

*

* @param num1

* @param num2

* @return

*/

public int Add_3(int num1, int num2) {

return Integer.sum(num1, num2);

}

/**

* 递归

*

* @param num1

* @param num2

* @return

*/

public int Add_2(int num1, int num2) {

if (num2 == 0)

return num1;

return Add(num1 ^ num2, (num1 & num2) << 1);

}

/**

* 位运算

*

* @param num1

* @param num2

* @return

*/

public int Add(int num1, int num2) {

while (num2 != 0) {

int temp = num1 ^ num2;//执行加法

num2 = (num1 & num2) << 1;//进位操作

num1 = temp;

}

return num1;

}

}

剑指offer不用加减乘除做加法_剑指Offer-不用加减乘除做加法相关推荐

  1. golang适合做什么_这年头中年女人适合做什么兼职

    这年头中年女人适合做什么兼职 m6ergd 这年头中年女人适合做什么兼职 大家都友非常多,已经好几亿了,玩需要别人点赞,把视频刷上去,这样才有更好的访问量,然后就催生了点赞这样的平台.众所周知,戒烟的 ...

  2. 剑指offer有python版吗_剑指Offer算法类题目[Python版]

    标签:重复   作用   coding   面试   medium   mba   none   fas   utf-8 面试题012 数值的整数次方 解题思路1 考虑所有情况,循环连乘 代码: de ...

  3. 剑指offer没有java版吗_剑指Offer(Java版) 持续更新中

    面试题2 单例(之前有整理,略) 面试题3 二维数组中的查找 public boolean find(int target, int [][] array) { boolean found = fal ...

  4. 用python做软件_女友闹别扭不用担心,Python做个软件轻松哄好

    学编程难免有时觉得枯燥,但我们可以自己用编程来做一些有趣的事情,不仅可以排解自己的无聊,还可以给女朋友一个惊喜,增进两人感情! 人们都喜欢记住一些重要的日子,比如说跟女朋友认识的日子,结婚纪念日.周年 ...

  5. workunit 的指的工作单元是什么_三支一扶指的是什么?主要工作内容有哪些?

    一.支教:指的是分在乡镇当老师 1.经常倾听那些有经验的教师的示范课,并认真做好听课记录.课后与其他老师沟通交流,同时向他们也学习了很多有关教育教学的知识,从而不断提高自己的教学水平. 2.积极参加学 ...

  6. 归纳推理测试没做完_看她家新房,保洁做完还没家具就很漂亮,墙面刷灰色耐看又耐脏...

    每个人的需求与需求,每个人心目中的家都不一样,但我们都可能把家装出想要的效果,让家人,让自己以后生活会更舒适,待在屋里能感受到诗远方.通过别人家的装修,可以借鉴别人家一些相对比较好的经验,在装修过程中 ...

  7. 如何使用graphpad做柱形图_系列文章 如何使用PaddleDetection做一个完整项目(三)...

    系列文章 如何使用PaddleDetection做一个完整项目(三) 该文章是PaddleDetection的完结篇,请参考之前两篇文章 https://zhuanlan.zhihu.com/p/10 ...

  8. python3能做什么_你都用 Python 来做什么?

    python能做的有很多,我这里之阐述我自学的数据分析的内容,这也是我学习利用python进行数据分析的过程,如果要看实践可以直接看项目篇 数据分析中常用的软件是jupyter notebook,而应 ...

  9. java做爬虫和python做爬虫_为什么常用Python,Java做爬虫,而不是C#C++等?

    我写了爬虫在c#和java.区别不大,原则是充分利用正则表达式.这只是一个平台的问题.后来我才知道,许多爬虫是用python编写的.因为我不熟悉python目前,我不知道为什么.百度给了以下结果:1) ...

最新文章

  1. html怎么查看cad文件,如何直接查看CAD格式的图纸
  2. java堆与非堆的一些研究_堆和堆傻傻分不清?一文告诉你 Java 集合中「堆」的最佳打开方式...
  3. Python2和Python3除法差别
  4. 【脚本整理】docker-compose 部署prometheus + grafana
  5. 云服务器磁盘挂载_云小课 | 磁盘容量不够用?小课教你来扩容!
  6. Eclipse-Java代码规范和质量检查插件-PMD
  7. laravel安装笔记
  8. 15.深度学习练习:Deep Learning Art: Neural Style Transfer
  9. UESTC 1636 梦后楼台高锁,酒醒帘幕低垂
  10. hibernate oracle查询最大值_Java大数据:Mybatis和Hibernate对比分析
  11. java中异常+连接重置_java.net.SocketException:连接重置
  12. JAVA 基础 / 第八课:面向对象 / JAVA类的方法与实例方法
  13. javascript继承机制的设计思想(ryf)
  14. radius认证服务器部署linux,CentOS安装配置radius服务器
  15. LSD slam with stereo cameras (使用双目相机的LSD算法)
  16. 关于选课系统的的界面设计、类图设计、数据库设计。
  17. WindowsPE无法安装系统
  18. Univariate Distribution Relationships(单变量分布关系)
  19. 【文献翻译】Network Security Entity Recognition Methods Based on the Deep Neural Network
  20. js获取当天0点时间戳

热门文章

  1. 主要编程教学语言的讨论
  2. 上海理工大学菜鸟驿站把无人车送进社区 协助解决抗疫物资“最后100米”配送...
  3. 欠薪6个月 今天起又放假3个月?欠薪下的“自救”?柔宇科技紧急回应...
  4. 下一代Mac mini将率先搭载苹果自研M2系列芯片
  5. 饿了么618数据:休闲娱乐业增超200% 医美消费者翻倍
  6. 消息称《绝地求生》开发商Krafton将启动IPO 腾讯是大股东
  7. 一年带货2个亿,“小黄鸭”成国内最赚钱IP
  8. 福特电动汽车负责人嘲讽特斯拉:新野马“车顶可不会掉”
  9. 暴风集团被强制退市 暴风影音APP还在更新:0.99元VIP上线
  10. 趁618买iPhone 11还是等iPhone 12?李楠有话要说