LeetCode(不用加号的加法)
题目:
设计一个函数把两个数相加,不得使用+或者其他算数运算符。
示例:
输入:a=1,b=1
输出:2
提示:
- a,b均有可能是负数或0
- 结果不会溢出32位整数
初始思路:
看到题目我就明白只能用位运算,但因为对位运算熟悉度不够,只能想到>>或者<<,能够起到*2,/2的作用,然后选择复制参考了一波题解,着实被惊艳到,所以话不多说,上正菜。
参考思路:
采用半加法的思想,即两个二进制数单独的位相加其结果可以用异或运算得到,进位可以用与运算得到。
解释:
例:2+3,相当于10+11(二进制)
1.10^11=01(类似与8+9=7,未加上进位),进位:carry=(10&11<<1=100
2.01^100=101(加上进位),进位:carry=(001&100)<<1=0(进位为0,结束运算)
代码实现:
class Solution {
public:
int add(int a, int b) {
return b == 0 ? a : add(a ^ b, (unsigned int)(a & b) << 1);
}
};
LeetCode(不用加号的加法)的更多相关文章
- python不用加号实现加法
问题: Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -.E ...
- C语言不使用加号实现加法运算的几种方法
今天看到<编码:隐匿在计算机软硬件背后的语言>的第十二章:二进制加法器.讲述了全加器,半加器的原理以及如何实现加法.实现加法时所使用的全加器,半加器中包含的所有逻辑门在C语言中都有相应的运 ...
- 剑指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】不用加减乘除做加法 解题报告(Java)
[剑指Offer]不用加减乘除做加法 解题报告(Java) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题 ...
- 编程算法 - 不用加减乘除做加法 代码(C)
不用加减乘除做加法 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 写一个函数, 求两个整数之和, 要求在函数体内不得使用+, -, *, /四 ...
- Python 解决面试题47 不用加减乘除做加法
在看<剑指Offer>过程中,面试题47不用加减乘除做加法,给出的思路是使用二进制的异或以及与运算,总之就是使用二进制.但是在使用Python实现的过程中,对于正整数是没有问题的,但是对于 ...
- 剑指offer(48)不用加减乘除做加法
题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 题目分析 不用加减乘除做加法,我第一时间想到的就是用位运算,毕竟计算机是二进制的,所有的操作都是以位运算为基础 ...
- 《剑指offer》第六十五题(不用加减乘除做加法)
// 面试题65:不用加减乘除做加法 // 题目:写一个函数,求两个整数之和,要求在函数体内不得使用+.-.×.÷ // 四则运算符号. #include <iostream> int A ...
- 剑指offer42:不用加减乘除做加法
分析: (1)十进制加法分三步:(以5+17=22为例) 1. 只做各位相加不进位,此时相加结果为12(个位数5和7相加不进位是2,十位数0和1相加结果是1): 2. 做进位,5+7中有进位,进位的值 ...
随机推荐
- Linux基础快捷键
- mybatis generator 使用教程(生成带注释的实体类)
引言: 最近的一个项目,由于数据库表巨多,导致需要创建N多个java实体.dao.mapper.xml映射文件,如果均使用纯手工编写,无疑需要耗费大量时间和精力.于是上网学习了mybatis gene ...
- 吴裕雄--天生自然HTML学习笔记:HTML 布局
网页布局对改善网站的外观非常重要. 请慎重设计您的网页布局. <!DOCTYPE html> <html> <head> <meta charset=&qu ...
- 树的DFS
Depth-first search (DFS) is an algorithm for traversing or searching tree or graph data structures. ...
- Java编程风格节选
3.3 import语句 3.3.1 import不要使用通配符 即,不要出现类似这样的import语句:import java.util.*; 3.3.2 不要换行 import语句不换行,列限制( ...
- SpringMVC在使用过程中的错误
HTTP Status 500 - Request processing failed; nested exception is org.springframework.validation.Bind ...
- POJ 2728 二分+最小生成树
题意:给n个点,可以将每个点的x,y的欧几里得距离(就是坐标系里两点距离公式)看作距离,z的差值即为费用差,求的是所有最小生成树中的min(边费用和/边距离和). 思路:其实挑战P143有类似的列题, ...
- CHI 2015大会:着眼于更加个性化的人机交互
2015大会:着眼于更加个性化的人机交互" title="CHI 2015大会:着眼于更加个性化的人机交互"> 本周,人机交互领域的顶级盛会--2015年ACM C ...
- [转]<版本一>写代码的小女孩
天冷极了,下着雪,又快黑了.这是NOIP的前夜.在这又冷又黑的晚上,一个衣衫破烂的小女孩在机房敲着代码.她从班里逃出来的时候还拿着一本算导,但是有什么用呢?那是一本很破旧的书——那么大,一向是她妈妈垫 ...
- 阿里云ECS 实例Centos7系统磁盘扩容
需求:一台阿里云的数据盘磁盘空间不足,需要扩容,我这里只有一个主分区,ext4文件系统. 因为磁盘扩容场景不同,阿里云的文档比较全面一些,所以先奉上阿里云的文档,下面开始我的操作步骤: 1.登录控制台 ...