【剑指offer】65. 不用加减乘除做加法
剑指 Offer 65. 不用加减乘除做加法
知识点:数学;位运算
题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。
示例
输入: a = 1, b = 1
输出: 2
解法一:位运算
不能用四则运算,那其实可以用的只要逻辑运算和位运算了,这里很明显要用位运算。关键怎么用呢。
我们列一张表其实就可以发现,两个元素如果没有进位也就是不是对应位都是1的时候,相加就和异或运算的结果是一样的;如果有进位,也就是两位上都是1的时候,相加就是两者相与然后左移一位;所以我们就可以做了。
可以依次得到两个数的异或结果和与结果;
sum=a+b=sum+carry;但是求得这两个后还是要加,由于不能用加法,所以可以再求这两个结果的与结果和异或结果。直到最后进位的为0,sum就是答案了。
class Solution {
public int add(int a, int b) {
int sum = a^b; //无进位的;
int carry = (a&b) << 1; //有进位的;
while(carry != 0){ //进位为0的时候返回sum;
a = sum;
b = carry;
sum = a^b;
carry = (a & b) << 1;
}
return sum;
}
}
相关链接
【剑指offer】65. 不用加减乘除做加法的更多相关文章
- 剑指offer 65. 不用加减乘除做加法(Leetcode 371. Sum of Two Integers)
剑指offer 65. 不用加减乘除做加法(Leetcode 371. Sum of Two Integers) https://leetcode.com/problems/sum-of-two-in ...
- 剑指 Offer 65. 不用加减乘除做加法 + 位运算
剑指 Offer 65. 不用加减乘除做加法 Offer_65 题目描述 题解分析 java代码 package com.walegarrett.offer; /** * @Author WaleGa ...
- 【Java】 剑指offer(65) 不用加减乘除做加法
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.×. ...
- 【剑指Offer】不用加减乘除做加法 解题报告(Java)
[剑指Offer]不用加减乘除做加法 解题报告(Java) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题 ...
- Go语言实现:【剑指offer】不用加减乘除做加法
该题目来源于牛客网<剑指offer>专题. 第一步:相加各位的值,不算进位,得到010,二进制每位相加就相当于各位做异或操作,101^111. 第二步:计算进位值,得到1010,相当于各位 ...
- 【剑指offer】不用加减乘除做加法,C++实现
原创博文,转载请注明出处! # 题目 # 思路 第一步:不考虑进位对每一位相加(异或操作) 第二步:考虑进位(位与运算+左移) 第三步:第一步和第二步相加(重复执行前两步) # 代码 #include ...
- 剑指Offer 48. 不用加减乘除做加法 (其他)
题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 题目地址 https://www.nowcoder.com/practice/59ac416b4b944300 ...
- [剑指Offer] 48.不用加减乘除做加法
题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. [思路] 首先看十进制是如何做的: 5+7=12,三步走第一步:相加各位的值,不算进位,得到2.第二步:计算进 ...
- 【剑指offer】不用加减乘除做加法
转载请注明出处:http://blog.csdn.net/ns_code/article/details/27966641 题目描写叙述: 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.* ...
- 剑指offer——75不用加减乘除做加法
题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 题解: 使用位运算 class Solution { public: int Add(int num1 ...
随机推荐
- 不带Anchors和NMS的目标检测
前言: 目标检测是计算机视觉中的一项传统任务.自2015年以来,人们倾向于使用现代深度学习技术来提高目标检测的性能.虽然模型的准确性越来越高,但模型的复杂性也增加了,主要是由于在训练和NMS后处理过 ...
- Tomcat:启动tomcat服务报错没有权限
1.在linu上部署好tomcat后,准备启动时报错: Cannot find bin/catalina.sh The file is absent or does not have execute ...
- Kong Admin API — 核心对象
目录 Service API详解 1. 添加服务 2. 列出service列表 3. 查找service 按条件查找service 查找与指定route关联的service 查找与指定Plugin关联 ...
- shell脚本(2)-shell脚本语法
一.如何抒写shell脚本 1.shell脚本的命名 名字要有意义,不要以a.b.c.1.2.3这种方式命令,建议以sh结尾,在30个字节内,例如:check_memory.sh 2.shell脚本 ...
- C++ MFC应用程序开发实例
MFC:微软基础类(Microsoft Foundation Classes),同VCL类似,是一种应用程序框架,随微软Visual C++ 开发工具发布.作为Application Framewor ...
- Adaptive AUTOSAR 学习笔记 7 - 应用设计和 Manifest
本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf 缩写 AP:AUTOSAR Adap ...
- C语言:数据类型转换
#include <stdio.h> main() { printf("%d\n",sizeof(1)); printf("%d\n",sizeof ...
- 查看JVM默认参数及微调JVM启动参数
目录 查看某个JVM进程堆内存信息 微调JVM启动参数 查看JVM的一些默认参数 参考廖雪峰老师的这篇 JVM调优的正确姿势: https://www.liaoxuefeng.com/article/ ...
- 使用mvn命令将pom和jar上传至nexus私服
要将自定义的jar或者pom上传至nexus私服,需要配置maven的settings文件! 上传至nexus私服配置 1. settings配置 <!-- maven设置私服对应的信息:id. ...
- Java 加载、操作和保存WPS文字文档
本文通过Java程序代码来展示如何来加载.操作及保存WPS格式的文字文档. 一.基本步骤:加载时,通过流加载WPS文字文档,完成相关文字操作后,再将结果文档保存到流,将流写入WPS文档,闭关闭流. 二 ...