题目链接,没必要,就是a + b
不过发现了竟然除了力扣还有个领扣,233333,一查还蛮久的,看来是我孤陋寡闻了
本来想拿go练练手的,结果发现连基础的50题还有蛮多问题= =,就是那种语法熟练度跟不上思想的那种感觉 QAQ
一定是go的语法太反人类惹
思路
a + b还能有什么思路,return a + b就完事了嗷
然后我看到下面的一句:试着不使用+号完成。。。
我下意识得联想到那些与或非异或的运算符,然后上床趴了许久,想不出
然后一查,噢,我只想出异或是二进制相加但没有进位,而与运算后再左移一位就是进位了
是在是妙啊
考虑 a = 5, b = 6的情况
a: 101
b: 110
异或:0011
与: 0100
进位:1000
重复直到进位结果为0即可
代码
func aplusb(a, b int) int {
var sum int
var carry int
for b != 0 {
sum = a ^ b
carry = a & b << 1
a = sum
b = carry
}
return a
}
心得
还是要好好修炼基本功呀,路漫漫其修远兮,吾将上下求go