• Leecode刷题之旅-C语言/python-69x的平方根


    /*
     * @lc app=leetcode.cn id=69 lang=c
     *
     * [69] x 的平方根
     *
     * https://leetcode-cn.com/problems/sqrtx/description/
     *
     * algorithms
     * Easy (34.81%)
     * Total Accepted:    25.4K
     * Total Submissions: 73.1K
     * Testcase Example:  '4'
     *
     * 实现 int sqrt(int x) 函数。
     * 
     * 计算并返回 x 的平方根,其中 x 是非负整数。
     * 
     * 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
     * 
     * 示例 1:
     * 
     * 输入: 4
     * 输出: 2
     * 
     * 
     * 示例 2:
     * 
     * 输入: 8
     * 输出: 2
     * 说明: 8 的平方根是 2.82842..., 
     * 由于返回类型是整数,小数部分将被舍去。
     * 
     * 
     */
    int mySqrt(int x) {
        long i = 1;
        if(x==1){
            return 1;
        }
        for(i=1;i<=x/2;i++){
            if(i*i==x){
                return i;
            }
            else if(i*i<x&&(i+1)*(i+1)>x){
                return i;
            }
        }
        return 0;
    }

    这里要注意取值范围,用long比较合适。思路也挺简单的,循环到目标值的一半即可,然后两个判断,要么相等,要么当前值平方小于目标值,当前值加1的平方大于目标值。

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    python:

    #
    # @lc app=leetcode.cn id=69 lang=python3
    #
    # [69] x 的平方根
    #
    # https://leetcode-cn.com/problems/sqrtx/description/
    #
    # algorithms
    # Easy (34.81%)
    # Total Accepted:    25.4K
    # Total Submissions: 73.1K
    # Testcase Example:  '4'
    #
    # 实现 int sqrt(int x) 函数。
    # 
    # 计算并返回 x 的平方根,其中 x 是非负整数。
    # 
    # 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
    # 
    # 示例 1:
    # 
    # 输入: 4
    # 输出: 2
    # 
    # 
    # 示例 2:
    # 
    # 输入: 8
    # 输出: 2
    # 说明: 8 的平方根是 2.82842..., 
    # 由于返回类型是整数,小数部分将被舍去。
    # 
    # 
    #
    class Solution:
        def mySqrt(self, x: int) -> int:
            low = 0
            mid = x // 2   # //代表整数除法
            high = x
            while low <= high:           #注意判断条件
                if mid * mid > x:
                    high = mid - 1
                elif mid * mid < x:
                    low = mid + 1
                else:
                    return mid
                mid = (low + high) // 2
            return mid          #向下取整

    python用的是二分法。

  • 相关阅读:
    AtCoDeer and Election Report
    乒乓球
    dp(装箱)
    《非你莫属》面试者现场跟面试官用英文对话,一口流利的英语口语厉害了
    冬天喝酸奶,可以加热吗?冬天喝酸奶,这4个方面要注意
    滑县两个富豪打赌,一人吃了一泡狗屎
    为什么外国富豪都喜欢捐光所有财产
    发的微博有敏感词
    社交网络
    怎么把word中的文字拉细变瘦长
  • 原文地址:https://www.cnblogs.com/lixiaoyao123/p/10514885.html
Copyright © 2020-2023  润新知