leetcode - Divide Two Integers
2013-03-28 22:59 张汉生 阅读(173) 评论(0) 编辑 收藏 举报题目描述:点击此处
1 #include <limits.h> 2 class Solution { 3 public: 4 unsigned int maxInt = (unsigned int) INT_MAX; 5 unsigned int getAbsoluteValue(int n){ 6 if (n>=0 || n==INT_MIN) 7 return (unsigned int) n; 8 return maxInt + maxInt + 1 - (unsigned int)n +1; 9 } 10 unsigned int divideUnsigned(unsigned int dividend, unsigned int divisor){ 11 unsigned int rlt = 0; 12 unsigned int remain = dividend; 13 unsigned int trlt; 14 unsigned int tdiv; 15 while (remain>=divisor){ 16 tdiv = divisor; 17 trlt = 1; 18 while (tdiv<=remain){ 19 remain -= tdiv; 20 rlt += trlt; 21 if(tdiv > remain) 22 break; 23 trlt += trlt; 24 tdiv += tdiv; 25 } 26 } 27 return rlt; 28 } 29 int divide(int dividend, int divisor) { 30 // Start typing your C/C++ solution below 31 // DO NOT write int main() function 32 unsigned int urlt = divideUnsigned(getAbsoluteValue(dividend), getAbsoluteValue(divisor)); 33 bool flag = true; 34 if (dividend<0) 35 flag = !flag; 36 if (divisor<0) 37 flag = !flag; 38 if (flag) 39 return (int) urlt; 40 if (urlt==0 || urlt ==maxInt+1) 41 return (int) urlt; 42 return (int)( maxInt+ maxInt + 1 - urlt +1); 43 } 44 };