엔지니어 게시판
LeetCode 솔루션 분류

[Easy - wk3 - Q1] 69. Sqrt(x)

컨텐츠 정보

본문

69. Sqrt(x) 


Given a non-negative integer x, compute and return the square root of x.

Since the return type is an integer, the decimal digits are truncated, and only the integer part of the result is returned.

Note: You are not allowed to use any built-in exponent function or operator, such as pow(x, 0.5) or x ** 0.5.

 

Example 1:

Input: x = 4
Output: 2

Example 2:

Input: x = 8
Output: 2
Explanation: The square root of 8 is 2.82842..., and since the decimal part is truncated, 2 is returned.

 

Constraints:

  • 0 <= x <= 231 - 1

관련자료

댓글 4

Jack님의 댓글

  • 익명
  • 작성일
Python

Runtime: 52 ms, faster than 56.80% of Python3 online submissions for Sqrt(x).
Memory Usage: 13.8 MB, less than 57.29% of Python3 online submissions for Sqrt(x).

from math import e, log
class Solution:
    def mySqrt(self, x):
        if x < 2:
            return x
        
        left = int(e**(0.5 * log(x)))
        right = left + 1
        return left if right * right > x else right


Runtime: 51 ms, faster than 58.81% of Python3 online submissions for Sqrt(x).
Memory Usage: 13.8 MB, less than 57.29% of Python3 online submissions for Sqrt(x).

class Solution:
    def mySqrt(self, x):
        if x < 2:
            return x
        
        left, right = 2, x // 2
        
        while left <= right:
            pivot = left + (right - left) // 2
            num = pivot * pivot
            if num > x:
                right = pivot -1
            elif num < x:
                left = pivot + 1
            else:
                return pivot
            
        return right

mingki님의 댓글

  • 익명
  • 작성일
class Solution {
public:
    int mySqrt(int x) {
        return sqrt(x);
    }
};

ㅋㅋㅋㅋㅋ

mingki님의 댓글

  • 익명
  • 작성일
C++
Runtime: 0 ms, faster than 100.00% of C++ online submissions for Sqrt(x).
Memory Usage: 5.8 MB, less than 74.81% of C++ online submissions for Sqrt(x).
class Solution {
public:
    int mySqrt(int x) {
        // Babylonian
        
        if (x <= 1) return x;
        
        double guess = 1.0 * x / 2;
        double prev = guess + 1;
        double accuracy = 1;
        
        while (prev - guess >= accuracy) {
            prev = guess;
            guess = (prev + (1.0 * x / prev)) / 2;
        }
        return guess;
    }
};


Babylonian Method
https://en.wikipedia.org/wiki/Methods_of_computing_square_roots

dawn27님의 댓글

  • 익명
  • 작성일
Runtime: 85 ms, faster than 75.68% of JavaScript online submissions for Sqrt(x).
Memory Usage: 43.9 MB, less than 37.43% of JavaScript online submissions for Sqrt(x).
var mySqrt = function(x) {
    // input is 7, outcome is ...
    // 1, 2, 3, 4, 5, 6, 7
    // x is zero or all positive, decimals
    // return the square root of x.
    //need to use Math.floor method.
    
    // edge case: 
    if (x < 2) return x;
    
    // declare left, right pointer
    let left = 1;
    let right = x;
    
    // loop: left < right
    while (left < right) {
        let mid = Math.floor((left + right) / 2 );
        
        if (mid * mid === x) return mid;
        else if (mid * mid > x) right = mid;
        else if (mid * mid < x) left = mid+1;
    }
        return left-1;
    
};
전체 404 / 14 페이지
번호
제목
이름

최근글


인기글


새댓글


Stats


  • 현재 접속자 727 명
  • 오늘 방문자 2,102 명
  • 어제 방문자 7,890 명
  • 최대 방문자 14,831 명
  • 전체 회원수 1,537 명
알림 0