LeetCode 371. Sum of Two Integers
原题链接在这里:https://leetcode.com/problems/sum-of-two-integers/
题目:
Calculate the sum of two integers a and b, but you are not allowed to use the operator +
and -
.
Example 1:
Input: a = 1, b = 2
Output: 3
Example 2:
Input: a = -2, b = 3
Output: 1
题解:
两个数79和16 相加,不考虑进位相加得85, 只考虑进位进位是10, 85+10 = 95正好是结果.
二进制表示时, 不考虑进位0+0=0, 1+0=1, 0+1=1, 1+1=0, 其实就是xor.
只考虑进位0+0=0, 1+0=0, 0+1=0, 1+1=1, 其实就是&.
进位是放到更前以为,所以需要左移动一位, <<1.
可递推调用.
Time Complexity: O(1).
Space: O(1).
AC Java:
1 public class Solution { 2 public int getSum(int a, int b) { 3 if(b == 0){ 4 return a; 5 } 6 int sum = a^b; 7 int carry = (a&b)<<1; 8 return getSum(sum, carry); 9 } 10 }
也可Iteration.
Time Complexity: O(1).
Space: O(1).
AC Java:
1 public class Solution { 2 public int getSum(int a, int b) { 3 while(b != 0){ 4 int carry = (a&b)<<1; 5 a ^= b; 6 b = carry; 7 } 8 return a; 9 } 10 }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 继承的思维:从思维模式到架构设计的深度解析
· 如何在 .NET 中 使用 ANTLR4
· 后端思维之高并发处理方案
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· 当职场成战场:降职、阴谋与一场硬碰硬的抗争
· 35岁程序员的中年求职记:四次碰壁后的深度反思
· 用99元买的服务器搭一套CI/CD系统
· Excel百万数据如何快速导入?
· ShadowSql之.net sql拼写神器
2015-11-10 LeetCode 44. Wildcard Matching
2015-11-10 LeetCode 10. Regular Expression Matching
2015-11-10 LeetCode 65. Valid Number