Divide Two Integers
Divide two integers without using multiplication, division and mod operator.
题的思路不难,但是没有注意数据的大小问题。之前一直用int做,一直不能通过。换成long long才通过。
class Solution {
public:
int divide(int dividend, int divisor) {
int re = 0;
int flag =0;
long long end = dividend ,sor = divisor;
if(dividend <0)
{
end = 0- end;
flag ++;
}
if(divisor <0)
{
sor = 0- sor;
flag++;
}
if(sor >end)return 0;
map<double , int> ma; // value , times
vector<double> a;
long long temp = sor;
a.push_back(sor);
ma[temp] = 1;
int i =1;
while(temp < end)
{
temp = temp + temp;
i = i+ i;
a.push_back(temp);
ma[temp] = i ;
}
long long left = end;
int j = a.size()-1;
while(left >= sor)
{
while(left - a[j] >=0)
{
left = left -a[j];
re += ma[a[j]];
}
j--;
if(j < 0)break;
}
if(flag == 1)
return 0-re;
return re;
}
};
posted on 2014-05-07 10:28 pengyu2003 阅读(159) 评论(0) 收藏 举报
浙公网安备 33010602011771号