标签:思路 情况 解题思路 相加 turn car c++ 基本 ==
一:解题思路
对于这样的题目,不能使用加(+)、减(-),从而求两数之和。连最基本的+,-都不能用,那么肯定就要想到位运算了。找到里面的规律,进而总结出一般性的结论出来。比如,来举个例子,9+11 在二进制的层面来进行运算,为什么要用9和11两个数呢?因为他们包含了相加的多种情况在里面。
二:完整代码示例 (C++版和Java版)
Java递归版:
class Solution { public int getSum(int a, int b) { return b==0?a:getSum(a^b,(a&b)<<1); } }
Java迭代版:
class Solution { public int getSum(int a, int b) { while(b!=0) { int sum=a^b; int carry=(a&b)<<1; a=sum; b=carry; } return a; } }
C++版本与Java版本类似,就不在阐述。
标签:思路 情况 解题思路 相加 turn car c++ 基本 ==
原文地址:https://www.cnblogs.com/repinkply/p/12435414.html