码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode -- Sqrt(x)

时间:2014-11-13 01:48:07      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:style   io   color   ar   sp   for   on   bs   ad   

题目:

Implement int sqrt(int x).

Compute and return the square root of x

思路:1、利用二分法查找  

   2、Discuss里面贴了一些利用移位做的方法;

BTW:   C++11定义的Sqrt函数 from <cmath>

double sqrt (double x);
      float sqrt (float x);
long double sqrt (long double x);
     double sqrt (T x);           // additional overloads for integral types

CODE:

int sqrt(int x) {
   if(x<=1) { return x; }
  int left = 1;
  int right = x;
  while(left<=right) {  
    int mid = left + ((right-left)>>1);
    if(mid == x/mid) {
      return mid;
    }
    else if(mid < x/mid) {
      left = mid + 1;
    }
    else {
      right = mid - 1;
    }
  }
  return right;
}

using bit manipulation:

public int sqrt(int x) {

  long long ans = 0;

  long long bit = 1l << 16;  //输入为int,这里必须为long long

  while(bit > 0) {

    ans |= bit;

    if (ans * ans > x) {

      ans ^= bit;

    }else iff(ans * ans == x){

      break;

    }

     bit >>= 1;

  }

  return (int)ans;

}

Leetcode -- Sqrt(x)

标签:style   io   color   ar   sp   for   on   bs   ad   

原文地址:http://www.cnblogs.com/uudog/p/4093935.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!