[1] A+B問題 |lintcode1
思路:題目中要求用位運(yùn)算,百度位運(yùn)算實(shí)現(xiàn)。然后開心地發(fā)現(xiàn)了這篇簡書,寫的真好http://www.itdecent.cn/p/7bba031b11e7
代碼略
[2] 尾部的0 |lintcode2
思路:計(jì)算出n階乘中尾部零的個(gè)數(shù),返回多少個(gè)5,多少個(gè)52,多少個(gè)53……用遞歸或者迭代應(yīng)該都可以~
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; //這里忘掉過判斷是否在倆數(shù)中間找不到
else if(nums[(int)mid]>target)
back=mid;
else if(nums[(int)mid]<target)
front=mid;
}
return int(++mid);
}
}