剑指offer不用加减乘除做加法_剑指Offer-不用加减乘除做加法
题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
思路
思路一:
位运算
思路二:
递归
思路三:
调用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-不用加减乘除做加法相关推荐
- golang适合做什么_这年头中年女人适合做什么兼职
这年头中年女人适合做什么兼职 m6ergd 这年头中年女人适合做什么兼职 大家都友非常多,已经好几亿了,玩需要别人点赞,把视频刷上去,这样才有更好的访问量,然后就催生了点赞这样的平台.众所周知,戒烟的 ...
- 剑指offer有python版吗_剑指Offer算法类题目[Python版]
标签:重复 作用 coding 面试 medium mba none fas utf-8 面试题012 数值的整数次方 解题思路1 考虑所有情况,循环连乘 代码: de ...
- 剑指offer没有java版吗_剑指Offer(Java版) 持续更新中
面试题2 单例(之前有整理,略) 面试题3 二维数组中的查找 public boolean find(int target, int [][] array) { boolean found = fal ...
- 用python做软件_女友闹别扭不用担心,Python做个软件轻松哄好
学编程难免有时觉得枯燥,但我们可以自己用编程来做一些有趣的事情,不仅可以排解自己的无聊,还可以给女朋友一个惊喜,增进两人感情! 人们都喜欢记住一些重要的日子,比如说跟女朋友认识的日子,结婚纪念日.周年 ...
- workunit 的指的工作单元是什么_三支一扶指的是什么?主要工作内容有哪些?
一.支教:指的是分在乡镇当老师 1.经常倾听那些有经验的教师的示范课,并认真做好听课记录.课后与其他老师沟通交流,同时向他们也学习了很多有关教育教学的知识,从而不断提高自己的教学水平. 2.积极参加学 ...
- 归纳推理测试没做完_看她家新房,保洁做完还没家具就很漂亮,墙面刷灰色耐看又耐脏...
每个人的需求与需求,每个人心目中的家都不一样,但我们都可能把家装出想要的效果,让家人,让自己以后生活会更舒适,待在屋里能感受到诗远方.通过别人家的装修,可以借鉴别人家一些相对比较好的经验,在装修过程中 ...
- 如何使用graphpad做柱形图_系列文章 如何使用PaddleDetection做一个完整项目(三)...
系列文章 如何使用PaddleDetection做一个完整项目(三) 该文章是PaddleDetection的完结篇,请参考之前两篇文章 https://zhuanlan.zhihu.com/p/10 ...
- python3能做什么_你都用 Python 来做什么?
python能做的有很多,我这里之阐述我自学的数据分析的内容,这也是我学习利用python进行数据分析的过程,如果要看实践可以直接看项目篇 数据分析中常用的软件是jupyter notebook,而应 ...
- java做爬虫和python做爬虫_为什么常用Python,Java做爬虫,而不是C#C++等?
我写了爬虫在c#和java.区别不大,原则是充分利用正则表达式.这只是一个平台的问题.后来我才知道,许多爬虫是用python编写的.因为我不熟悉python目前,我不知道为什么.百度给了以下结果:1) ...
最新文章
- html怎么查看cad文件,如何直接查看CAD格式的图纸
- java堆与非堆的一些研究_堆和堆傻傻分不清?一文告诉你 Java 集合中「堆」的最佳打开方式...
- Python2和Python3除法差别
- 【脚本整理】docker-compose 部署prometheus + grafana
- 云服务器磁盘挂载_云小课 | 磁盘容量不够用?小课教你来扩容!
- Eclipse-Java代码规范和质量检查插件-PMD
- laravel安装笔记
- 15.深度学习练习:Deep Learning Art: Neural Style Transfer
- UESTC 1636 梦后楼台高锁,酒醒帘幕低垂
- hibernate oracle查询最大值_Java大数据:Mybatis和Hibernate对比分析
- java中异常+连接重置_java.net.SocketException:连接重置
- JAVA 基础 / 第八课:面向对象 / JAVA类的方法与实例方法
- javascript继承机制的设计思想(ryf)
- radius认证服务器部署linux,CentOS安装配置radius服务器
- LSD slam with stereo cameras (使用双目相机的LSD算法)
- 关于选课系统的的界面设计、类图设计、数据库设计。
- WindowsPE无法安装系统
- Univariate Distribution Relationships(单变量分布关系)
- 【文献翻译】Network Security Entity Recognition Methods Based on the Deep Neural Network
- js获取当天0点时间戳
热门文章
- 主要编程教学语言的讨论
- 上海理工大学菜鸟驿站把无人车送进社区 协助解决抗疫物资“最后100米”配送...
- 欠薪6个月 今天起又放假3个月?欠薪下的“自救”?柔宇科技紧急回应...
- 下一代Mac mini将率先搭载苹果自研M2系列芯片
- 饿了么618数据:休闲娱乐业增超200% 医美消费者翻倍
- 消息称《绝地求生》开发商Krafton将启动IPO 腾讯是大股东
- 一年带货2个亿,“小黄鸭”成国内最赚钱IP
- 福特电动汽车负责人嘲讽特斯拉:新野马“车顶可不会掉”
- 暴风集团被强制退市 暴风影音APP还在更新:0.99元VIP上线
- 趁618买iPhone 11还是等iPhone 12?李楠有话要说