码迷,mamicode.com
首页 > 其他好文 > 详细

p5 不用+-求两数之和 (leetcode371)

时间:2020-03-07 17:36:26      阅读:83      评论:0      收藏:0      [点我收藏+]

标签:思路   情况   解题思路   相加   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版本类似,就不在阐述。

p5 不用+-求两数之和 (leetcode371)

标签:思路   情况   解题思路   相加   turn   car   c++   基本   ==   

原文地址:https://www.cnblogs.com/repinkply/p/12435414.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!