您的位置:首页 > 其它

logn 时间复杂度 计算整数 末尾0的个数

2015-08-02 13:09 204 查看
折半查找

class Solution {
public:
int trailingZeroes(int n) {
int len = 0;
int tmp = n;
while(tmp) {
tmp /= 10;
len++;
}
int sum_zero = 0;
int high = len;
int low = 1;

// cout<<len<<endl;

while(low <= high) {
int mid = (high + low) / 2;
int factor = int(pow(10, mid-1));
if(n  == (n / factor) * factor ){
sum_zero = mid - 1;
// n /= factor;
low = mid + 1;
}  else {
high = mid - 1;
}
}

// if(low == high && n / int(pow(10, low-1)) == n) sum_zero++;
return sum_zero;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: