Published on

[LeetCode 69] Sqrt

Problem

TypeScript

Newton's Method

function mySqrt(x: number): number {
  let prev: number = x
  let cur: number = x / 2
  let precision: number = 0.1

  while (prev - cur > precision) {
    prev = cur
    cur = (cur * cur + x) / (2 * cur)
  }

  return Math.floor(cur)
}
function mySqrt(x: number): number {
  let left: number = 0
  let right: number = x

  while (left <= right) {
    let mid: number = Math.floor((left + right) / 2)
    let value: number = mid * mid
    if (value === x) {
      return mid
    } else if (value < x) {
      left = mid + 1
    } else {
      right = mid - 1
    }
  }

  return right
}

Reference