• 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用的是二分法。

  • 相关阅读:
    团队项目-BUG挖掘
    评论任务
    4-14结对-复利计算
    做汉堡-结对
    复利计算--结对
    input上传按钮的优化
    avalon.js与 ajax使用的一个错误实例
    去除list集合中重复项的几种方法
    mvc学习记录
    常用js正则
  • 原文地址:https://www.cnblogs.com/lixiaoyao123/p/10514885.html
Copyright © 2020-2023  润新知