美文网首页
<剑指Offer>面试题65: 不用加减乘除做加法

<剑指Offer>面试题65: 不用加减乘除做加法

作者: cb_guo | 来源:发表于2019-02-26 20:52 被阅读0次

    题目描述

    • 写一个函数,求连个整数之和,要求在函数体内不得使用 '+'、'-'、'*'、'/' 四则运算符号

    题目解读

    • 剑指Offer 310

    代码

    class Solution {
    public:
        int Add(int num1, int num2){
            int sum, jinwei;
            do{
                sum = num1 ^ num2;
                jinwei = (num1 & num2) << 1;
                num1 = sum;
                num2 = jinwei;
            }while(num2 != 0);
            return num1;
        }
    };
    

    扩展题目

    不使用新的变量,交换两个变量的数值。比如我们有两个变量 a, b,我们希望交换它们的值。有两种不同的方法

    • 方法一、基于加减法
    a = a + b;   // a 暂存两数之和
    b = a - b;   // b为两数之和减去b,b变为原来的a
    a = a - b;   // a为两数之和减去现在的b(原来的a),变成原来的b
    
    • 方法二、基于异或运算
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
    

    相关文章

      网友评论

          本文标题:<剑指Offer>面试题65: 不用加减乘除做加法

          本文链接:https://www.haomeiwen.com/subject/aysayqtx.html