winng的二月第一周题目

2019-01-30  本文已影响0人  winng伍寅

[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);
    }
  }
上一篇下一篇

猜你喜欢

热点阅读