题目描述

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

思路

思路一:

位运算

思路二:

递归

思路三:

调用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-不用加减乘除做加法的更多相关文章

  1. 剑指Offer——不用加减乘除做加法

    题目描述: 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 分析: "^"是不带进位的加法. "&"可以得到所有进位位组 ...

  2. 剑指Offer47 不用加减乘除做加法

    /************************************************************************* > File Name: 47_AddTwo ...

  3. 剑指offer--12.不用加减乘除做加法

    位运算,好久没用了 &:都为1,结果为1 ^:相同为0,不同为1 |:有1,结果为1 <<:左移 ----------------------------------------- ...

  4. 剑指Offer - 九度1507 - 不用加减乘除做加法

    剑指Offer - 九度1507 - 不用加减乘除做加法2013-11-29 20:00 题目描述: 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 输入: 输入可能包 ...

  5. 剑指offer 65. 不用加减乘除做加法(Leetcode 371. Sum of Two Integers)

    剑指offer 65. 不用加减乘除做加法(Leetcode 371. Sum of Two Integers) https://leetcode.com/problems/sum-of-two-in ...

  6. 剑指 Offer 65. 不用加减乘除做加法 + 位运算

    剑指 Offer 65. 不用加减乘除做加法 Offer_65 题目描述 题解分析 java代码 package com.walegarrett.offer; /** * @Author WaleGa ...

  7. 【剑指offer】65. 不用加减乘除做加法

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

  8. 【剑指Offer】不用加减乘除做加法 解题报告(Java)

    [剑指Offer]不用加减乘除做加法 解题报告(Java) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题 ...

  9. 剑指offer(48)不用加减乘除做加法

    题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 题目分析 不用加减乘除做加法,我第一时间想到的就是用位运算,毕竟计算机是二进制的,所有的操作都是以位运算为基础 ...

随机推荐

  1. List,Set,Map

    1.Collection 和 Map 的区别 容器内每个为之所存储的元素个数不同.Collection类型者,每个位置只有一个元素.List,SetMap类型者,持有 key-value pair,像 ...

  2. 一句python,一句R︱模块导入与查看、数据读写出入、数据查看函数、数据类型、遍历文件

    先学了R,最近刚刚上手python,所以想着将python和R结合起来互相对比来更好理解python.最好就是一句python,对应写一句R. pandas中有类似R中的read.table的功能,而 ...

  3. hi3531spi flash启动和bootrom启动的对比

    a

  4. HighCharts之气泡图

    HighCharts之气泡图 1.HighCharts之气泡图源码 bubble.html: <!DOCTYPE html> <html> <head> <m ...

  5. An internal error occurred during: "Building workspace". GC overhead limit exceeded

    1 错误描述 2 错误原因 3 解决办法

  6. Axure RP一个专业的快速原型设计工具

    Axure RP是一个专业的快速原型设计工具.Axure(发音:Ack-sure),代表美国Axure公司:RP则是Rapid Prototyping(快速原型)的缩写. Axure简要介绍 Axur ...

  7. java创建自定义类的数组

    今天在学图论的最小生成树,开始一直在想是用邻接矩阵还是关联矩阵来表示图,但是发现这样都会有好多空间浪费.于是我就自定义一个边的类,里面包含了权值,关联的端点1,端点2,和图的表示字母.发现我想创建11 ...

  8. SpringBean基础装配

            首先,让我们先对Bean进行理解:什么是Bean,为什么要有Bean,如何装配Bean:         1,什么是Bean?             Bean你可以看成是一个组件,在 ...

  9. 一个仿3D的平面游戏页面

    package com.totoo.TouhouMassLight;import android.os.Bundle;import android.view.MotionEvent;import an ...

  10. ThreadPoolExecutor线程池参数设置技巧

    一.ThreadPoolExecutor的重要参数   corePoolSize:核心线程数 核心线程会一直存活,及时没有任务需要执行 当线程数小于核心线程数时,即使有线程空闲,线程池也会优先创建新线 ...