zoukankan      html  css  js  c++  java
  • x的平方根(Python and C++解法)

    题目:

    实现 int sqrt(int x) 函数。

    计算并返回 x 的平方根,其中 x 是非负整数。

    由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。

    示例 1: 输入: 4  输出: 2

    示例 2:输入: 8  输出: 2

    说明: 8 的平方根是 2.82842...,  由于返回类型是整数,小数部分将被舍去。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/sqrtx

    思路:

      采用二分查找的方法,逐渐寻找接近结果的值。

    Python解法:

     1 class Solution:
     2     def mySqrt(self, x: int):
     3         if x == 0 or x == 1:
     4             return x
     5         left = 0
     6         right = x//2+1 
     7         while left <= right:
     8             mid = (left + right) // 2
     9             if mid * mid <= x and (mid+1) * (mid+1) > x:  # 右边不能为=
    10                 return mid
    11             elif x < mid * mid:
    12                 right = mid - 1
    13             elif x > mid * mid:
    14                 left = mid + 1

    C++解法:

     1 class Solution {
     2 public:
     3     int mySqrt(int x) {
     4         if (x == 0 || x == 1)
     5             return x;
     6         long left = 0;
     7         long right = x / 2 + 1;  // 对于一个非负数n,它的平方根不会大于n/2+1
     8         while (left <= right) {
     9             long mid = left + (right - left) / 2;  // 防止溢出
    10             if (x / mid >= mid && x / (mid + 1) < (mid + 1))  // 防止溢出
    11                 return mid;
    12             else if (x / mid < mid)
    13                 right = mid - 1;
    14             else if (x / mid > mid)
    15                 left = mid + 1;
    16         }
    17     }
    18 };
  • 相关阅读:
    XML应用程开发--下
    XML应用程序开发--上
    TCP通信客户端简单示例
    TCP网络通信服务器端简单示例
    XML基本内容学习笔记
    如何在Qt的widget上右键显示菜单
    关于双指针遍历
    常见的四种排序算法
    JAVA Class13
    JAVA练习
  • 原文地址:https://www.cnblogs.com/kongzimengzixiaozhuzi/p/13160454.html
Copyright © 2011-2022 走看看