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