文章目录
- Add Two Integers 两整数相加
- 问题描述:
- 分析
- 代码
- 递归
- Tag
Add Two Integers 两整数相加
问题描述:
给你两个整数 num1
和 num2
,返回这两个整数的和。
− 100 < = n u m 1 , n u m 2 < = 100 -100 <= num1, num2 <= 100 −100<=num1,num2<=100
分析
呃,解决这个问题一行代码就可以。而且时间复杂度和空间复杂度都是 O ( 1 ) O(1) O(1)
而这个问题的升级版,就是不用算术运算符完成2数相加,这个就有点意思了。
如果不使用算术运算符,就需要借助二进制,来模拟进行二进制数的加法。
在二进制的情况下,加法主要使用位运算符来处理。
具体的看代码实现,涉及到 移位
,异或
运算。
代码
递归
public int sum(int num1, int num2) {if (num1 == 0) {return num2;}int carry = (num1 & num2) << 1;int remain = num1 ^ num2;return sum(carry, remain);}
时间复杂度 O ( l o g C ) O(logC) O(logC)
空间复杂度 O ( l o g C ) O(logC) O(logC)
Tag
Math