[1] A+B问题 |lintcode1
思路:题目中要求用位运算,百度位运算实现。然后开心地发现了这篇简书,写的真好https://www.jianshu.com/p/7bba031b11e7
代码略
[2] 尾部的0 |lintcode2
思路:计算出n阶乘中尾部零的个数,返回多少个5,多少个52,多少个53……用递归或者迭代应该都可以~
long long trailingZeros(long long n) {
long long num=0,wu=5;
while(wu<=n){
num+=n/wu;
wu*=5;
}
return num;
}
[3] 二分查找 |lintcode14
思路:简单的二分查找(然额我de了好久bug)
int binarySearch(vector<int> &nums, int target) {
if (target<nums.front()||target>nums.back())
return -1;
else{
long num=nums.size(),front=0,back=num-1,mid;
while(1){
mid=(back+front)/2;
if (nums[(int)mid]==target){
while(nums[(int)mid]==target)
mid--;
break;
}
else if((back==front||(back-front)==1)&&
nums[back]!=target&&nums[front]!=target)
return -1; //这里忘掉过判断是否在俩数中间找不到
else if(nums[(int)mid]>target)
back=mid;
else if(nums[(int)mid]<target)
front=mid;
}
return int(++mid);
}
}
网友评论