劍指offer____不用加減乘除做加法
阿新 • • 發佈:2018-11-17
寫一個函式,求兩個整數之和,要求在函式體內不得使用+、-、*、/四則運算子號。
方法一:位運算
class Solution { public: int Add(int num1, int num2) { /* if(num2 == 0) return num1; int sum = num1 ^ num2; int carry = (num1 & num2) << 1; return Add(sum, carry); */ int sum = num1 ^ num2; int carry = (num1 & num2) << 1; while(carry != 0){ int a = sum; int b = carry; sum = a ^ b; carry = (a & b) << 1; } return sum; } };
方法二:構造方法
class Solution { public: Solution() { sum = -~sum; //sum ++; } static void Reset() { sum = 0; } static int GetSum() { return sum; } private: static int sum; }; int Solution::sum = 0; int sum_solution(int n,int m) { Solution::Reset(); Solution *s = new Solution[n]; Solution *s1 = new Solution[m]; delete []s; delete[]s1; return Solution::GetSum(); }