zoukankan      html  css  js  c++  java
  • LeetCode 69. Sqrt(x) (平方根)

    Implement int sqrt(int x).

    Compute and return the square root of x.

    x is guaranteed to be a non-negative integer.


    Example 1:

    Input: 4
    Output: 2
    

    Example 2:

    Input: 8
    Output: 2
    Explanation: The square root of 8 is 2.82842..., and since we want to return an integer, the decimal part will be truncated.
    

    题目标签:Math

      题目给了我们一个x, 让我们找到平方根。

      可以利用binary search 来做,首先找到一个范围,不需要是从0 到 x。因为 sqrt(x) 一定是小于等于 x / 2 + 1的。

      所以起始范围为 0  到  x / 2 + 1;

      还要注意 sq = mid * mid。 这里要检查 overflow。

    Java Solution:

    Runtime beats 53.10% 

    完成日期:06/12/2017

    关键词:Binary Search

    关键点:检查overflow

     1 class Solution 
     2 {
     3     public int mySqrt(int x) 
     4     {
     5         int left = 0;
     6         int right = x / 2 + 1;
     7         
     8         while(left <= right)
     9         {
    10             int mid = left + (right - left)/2; 
    11             int sq = mid * mid;
    12             
    13             if(mid != 0 && sq / mid != mid) // check overflow
    14             {
    15                 right = mid - 1; // meaning mid is too big, go to left part
    16                 continue;
    17             }
    18             
    19             if(sq == x)
    20                 return mid;
    21             else if(sq < x)
    22                 left = mid + 1;
    23             else
    24                 right = mid - 1;
    25             
    26         }
    27         
    28         return right;
    29     }
    30 }

    参考资料:N/A

    LeetCode 题目列表 - LeetCode Questions List

    题目来源:https://leetcode.com/

  • 相关阅读:
    hdu 2106 decimal system
    00-自测4. Have Fun with Numbers (20)
    07-图4. Saving James Bond
    hdu 2209 翻纸牌游戏
    hdu 1272 小希的迷宫
    1969 Pie
    怎样维护 SQLite
    Navicat使用亮点
    Navicat for MySQL 11 Mac安装教程
    Navicat for PostgreSQL 运算符有哪些类别
  • 原文地址:https://www.cnblogs.com/jimmycheng/p/8035791.html
Copyright © 2011-2022 走看看