Leetcode算法——69、sqrt(x)

WOFOST模型参数调优实战:从‘跑不通’到‘预测准’的避坑指南 本文详细介绍了WOFOST模型参数调优的实战技巧,帮助用户从模型报错诊断到参数敏感性分析,再到土壤-作物参数联调策略,逐步解决‘跑不通’到‘预测准’的问题。通过Python和PCSE工具,提供参数扰动测试模板和关键参数优先级矩阵,助力作物模型的高效校准与预测。 阅读详情

完成函数 int sqrt(int x)。

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

返回结果去掉小数,只保留整数。

示例:

Example 1:
Input: 4
Output: 2

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

思路

1、枚举法

让 i 从 0 到 x 依次遍历,每次遍历时判断 i 的平方与 x 的大小,找到平方值小于等于 x 的最大的 i。

缺点:
当 x 很大时,遍历次数较多。

2、二分查找法

使用二分法的思路,定义一个上界 u 和下界 l,每次遍历时判断上下界的中位数 mid 的平方与 x 的大小,进而更新上界或下界,继续遍历。

可以使用递归法来实现二分查找,递归结束条件为:上下界相差不超过 1。

3、牛顿逼近法

使用数学中的最优化方法:牛顿逼近法,来将其变为一个求解方程的问题。

牛顿逼近法:

要想寻找 f(y)=0f(y)=0f(y)=0 的解,则可以使用迭代公式: y:=y−f(y)f′(y)y := y - \frac{f(y)}{f'(y)}y:=y−f′(y)f(y)​,直至收敛。

应用到本题,则为:已知 f(y)=y2−xf(y) = y^2 - xf(y)=y2−x,求使得 f(y)=0f(y) = 0f(y)=0 的 yyy 值。

其中,f′(y)=2yf'(y) = 2yf′(y)=2y,因此迭代公式为 y:=y−y2−x2y=y2+x2yy := y - \frac{y^2-x}{2y} = \frac y 2 + \frac{x}{2y}y:=y−2yy2−x​=2y​+2yx​

收敛条件:f(y)f(y)f(y) 的结果与 0 的距离小于某个阈值,如 0.1。

python实现

def mySqrt(x):
    """
    :type x: int
    :rtype: int
    枚举法
    """
    if x <= 1:
        return x
    for i in range(x+1):
        if i * i > x:
            break
    return i-1

def mySqrt2(x):
    """
    :type x: int
    :rtype: int
    牛顿逼近法.
    """
    y = x
    while (y*y - x) > 0.1:
        y = y/2 + x / (2*y)
        print(y)
    y = int(y)
    if (y+1)**2 < x: # 可能y=3.9999但是真实结果为4.0001,因此需要判断最后结果是 y 还是 y+1。
        return y+1
    else:
        return y
    
def mySqrt3(x):
    '''
    二分查找法
    '''
    if x <= 1:
        return x
    def binary_search(x, l, u):
        '''
        递归查找x的开方值。
        '''
        if u - l <= 1:
            return l
        mid = (u+l)//2
        if mid**2 == x:
            return mid
        elif mid**2 > x:
            return binary_search(x, l, mid)
        else:
            return binary_search(x, mid, u)
    return binary_search(x, 0, x)
    
if '__main__' == __name__:
    x = 9
    print(mySqrt3(x))
【第24例】华为 IPD 体系 | RMT 需求管理团队 RMT需求管理团队 阅读详情

相关推荐

ANSYS APDL实战:手把手教你搞定电磁-热耦合分析(附完整命令流)

本文通过一个工业感应加热线圈的实战案例,手把手教你使用ANSYS APDL完成电磁-热耦合分析。内容涵盖从几何建模、材料定义、网格划分到加载求解及后处理的完整流程,重点讲解了使用PLANE13单元进行双向耦合场分析的方法与命令流调试技巧,助力工程师快速掌握这一核心仿真能力。

weixin_29284201的博客 422

LeetCode高频题:二分法求开根号sqrt(x),保留3位小数,速度快,简单

1)二分法求开根号sqrt(x),保留3位小数,速度快,简单 3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

weixin_46838716的博客 3860

Zemax实战:20×超高清变焦镜头设计全流程解析(从架构到制造)

本文详细解析了使用Zemax软件设计一款20倍变焦比、恒定F2.8光圈8K超高清镜头的全流程。从应对恒定光圈、宽光谱与8K解析力三大挑战的初始架构规划,到构建多重组态模型、分七阶段进行像差优化与公差分析,最终跨越制造鸿沟,为广播级影视与高精度工业检测应用提供了实战指南。

sun99的博客 551

LeetCode:求开方(Sqrt)

/* 题目描述: 给定一个非负整数,求它的开方,向下取整 示例: Input:8 Output:2 解题思路: 解法一:可以理解为,给定一个非负整数a,求f(x)=x^2-a=0的解,只考虑到x>=0,因此f(x)在定义域上是单调递增的。 所以f(a)=a^2-a>=0,因此可以对[0,a]区间使用二分查找的f(x)=0的解。 解法二:牛顿迭代法,其公式为Xn+1=Xn-F(Xn)f'(Xn),给定f(x)=x^2-a,迭代公式为Xn+1=(Xn+a/Xn)/2 */ Go语言实现 .

Jiangtagong的博客 864

SAP公司间外协业务流程以及配置说明

SAP公司间外协业务流程以及配置说明

竹大的博客 7166

PredFormer实战:用Transformer搞定交通流量预测(附TaxiBJ数据集代码)

本文详细介绍了如何利用PredFormer这一基于Transformer的先进模型进行交通流量预测,特别针对TaxiBJ数据集提供了完整的实战代码和优化策略。PredFormer通过门控Transformer块(GTB)的创新设计,在时空预测任务中展现出显著优势,相比传统方法将MSE降低33.1%,推理速度提升4.4倍。文章还涵盖了模型轻量化、部署优化等实用技巧,为智慧城市建设中的交通预测提供了高效解决方案。

weixin_29194817的博客 445

leetcode 69. Sqrt(x) x 的平方根(简单)

了解二分法和牛顿迭代法两个思路来求方程根

ln_ydc的专栏 159

Yolov2 训练时anchor是如何使用的?build_target

0.简略描述 1.将真值检测框变换到特征图尺度上 2.计算以特征图每个网格中心为中心点时所有锚框与真值检测框的交并比 3.取与真值检测框交并比最大的锚框的id,及真值检测框中心所在cell的id,有此,可将真值检测框与预测结果对应起来 4.计算位置回归损失,置信度损失,分类损失 1,网络的输出 图1 yolov2 网络对于检测框位置大小的输出是: 对于1个batch网络的输出的shape为[batch_size, H*W*num_anchors, 5+num_classes], 其中: num_

机器人视觉感知 2816

LeetCode 69: Sqrt(x) 求根号x(牛顿迭代法和二分查找法)

题目: Implement int sqrt(int x). Compute and return the square root of x.分析:我们平常可能好少会自己去求解某个数的平方根,一般都是直接调用系统提供的函数,其实一般针对问题,并没有直接求解的公式,一般都是通过一个公式多次迭代来无限接近于这个解,这时,这个值就是我们要求的解。 下面我们简要介绍2中方法:牛顿迭代法和二分查找法。牛

gq的博客 7878

雷电模拟器+ADB全栈爬虫实战:绕过APP反爬的终极方案与2026最新踩坑指南

现在主流的模拟器爬虫方案有三种,我对比了它们的优缺点,最终选择了雷电模拟器+纯ADB控制方案优势劣势适用场景Appium生态完善,支持多平台重依赖,启动慢,反爬检测率高大型项目,需要跨平台Airtest图像识别强大,上手简单性能差,多开不稳定,反爬检测率高简单的自动化测试纯ADB轻量无依赖,速度快,反爬检测率极低需要自己封装工具工业级爬虫,追求稳定性和反爬逆向接口速度最快,性能最好开发成本高,维护成本高接口简单,反爬弱的APP为什么选雷电模拟器?

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1982

【图像超分】论文精读:Enhanced Deep Residual Networks for Single Image Super-Resolution(EDSR和MDSR)

最近对超分辨率的研究随着深度卷积神经网络 (DCNN) 的发展取得了进展。特别是,残差学习技术表现出更好的性能。在本文中,我们开发了一个增强的深度超分辨率网络(EDSR),其性能超过了当前最先进的 SR 方法。我们模型的显着性能改进是由于通过删除传统残差网络中不必要的模块进行优化。当我们稳定训练过程时,通过扩展模型大小可以进一步提高性能。我们还提出了一种新的多尺度深度超分辨率系统(MDSR)和训练方法,该方法可以在单个模型中重建不同缩放因子的高分辨率图像。所提出的方法在基准数据集上比最先进的方法表现出更好的

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 7924

leetcode/求平方根

/** * 剑指 Offer II 072. 求平方根 * - 给定一个非负整数 x ,计算并返回 x 的平方根,即实现int sqrt(int x)函数。 * - 正数的平方根有两个,只输出其中的正数平方根。 * - 如果平方根不是整数,输出只保留整数的部分,小数部分将被舍去。 */

求道问术 896

【Coze搞钱实战】24. 从零实现精准用户画像:Coze+企业微信打造智能导购推送系统(附完整代码)

电商运营中,“客服重复询问用户需求、无法精准推荐”是转化率低的核心痛点——日均200人次咨询,73%的问题是重复的,首单转化率仅14%。本文基于Coze平台sys_uuid用户识别功能、企业微信API与多维表格,打造“用户行为→自动打标→标签存储→智能推送”全链路方案:通过分类分层标签体系捕捉用户偏好,Coze自动识别用户并打标,飞书多维表格存储标签数据,企业微信触发个性化推送。实操后可使客服重复询问率下降62%,意向客户转化率提升81%,首单转化率提升64%。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 543

python写算法题:leetcode: 69. Sqrt(x)

class Solution(object): def mySqrt(self, x): """ :type x: int :rtype: int """ if x==0: return 0 n=1 step=x while step&g...

307

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【算法-LeetCode】69. Sqrt(x)(二分查找)

69. Sqrt(x) - 力扣(LeetCode) 文章更新:2021年10月16日15:59:14 问题描述及示例 给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。 注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。 示例 1: 输入:x = 4 输出:2 示例 2: 输入:x = 8 输出:2 解释:8 的算术平方根是 2.82842…, 由于返回类型是整数,小数部分将被舍

赖念安的博客 280

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

LeetCode 69. Sqrt(x),求根算法

69. Sqrt(x) Implement int sqrt(int x). Compute and return the square root of x. Subscribe to see which companies asked this question 这道题要找x的平方根,x的平方根肯定小于x/2。要在[1,x/2]有序序列当中找一个数,用二分法:

记忆力不好的博客 2281

LeetCode算法系列:69. Sqrt(x)

目录   题目描述: 算法实现 他山之石: 题目描述: Implement int sqrt(int x). Compute and return the square root of x, where x is guaranteed to be a non-negative integer. Since the return type is an integer, the dec...

Efan_W的博客 188

leetcode算法题----Sqrt(x)

题目:69. Sqrt(x) Easy Implement int sqrt(int x). Compute and return the square root of x, wherexis guaranteed to be a non-negative integer. Since the return typeis an integer, the decimal digits ...

东篱下 286

LeetCode 第 69 题 (Sqrt(x))

LeetCode 第 69 题 (Sqrt(x)) Implement int sqrt(int x). Compute and return the square root of x. 求 x 的平方根。我们知道 x√\sqrt{x} 是单调增函数, 1≤x√≤x1 \leq \sqrt{x} \leq x。所以可以用二分查找法来计算。int mySqrt(int x) { if

Ivan 的专栏 2970

[勇者闯LeetCode] 69. Sqrt(x)

[勇者闯LeetCode] 69. Sqrt(x)Description Implement int sqrt(int x). Compute and return the square root o x Information Tags: Binary Search | Match Difficulty: Easy Tips: 二分搜索 O(logN) Solutionclass Sol

fanguzhai的博客 494

[LeetCode]69. Sqrt(x)

[LeetCode]69. Sqrt(x)题目描述思路由于题目要求返回的是整数,简单实现的话可以使用二分 注意实现过程中的一些越界问题代码#include <iostream>using namespace std;class Solution { public: int mySqrt(int x) { if (x == 1) return 1;

Lcharon的博客 437

leetcode --算法--69题实现 int sqrt(int x) 函数

求解X的平方根 计算并返回 x 的平方根,其中 x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 class Solution { public: int mySqrt(int x) { long left=0,right=x,m; int sqrt_x=x; while(left&amp;lt;=...

qq_41689306的博客 1145

LeetCode 69. Sqrt(x) 解题报告

LeetCode 69. Sqrt(x) 解题报告题目描述Implement int sqrt(int x).Compute and return the square root of x.示例没有给出。限制条件没有明确给出。解题思路这道题很虐心,我首先用的是牛顿迭代法解题,但是一直在2147395600和214739599这两个数出问题,于是改成用二分法,然而,还是载在这两个数据上,通过艰苦卓绝地

骆小坑的填坑之旅 702

[LeetCode 5.9] Valid Perfect Square

Valid Perfect Square Given a positive integer num, write a function which returns True if num is a perfect square else False. Follow up: Do not use any built-in library function such as sqrt. Example 1: Input: num = 16 Output: true Example 2: Input: num =

xvrixingkong的博客 117

【LeetCode】#69x的平方根(Sqrt(x))

【LeetCode】#69x的平方根(Sqrt(x)) 题目描述 实现 int sqrt(int x) 函数。 计算并返回 x 的平方根,其中 x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 示例 示例 1: 输入: 4 输出: 2 示例 2: 输入: 8 输出: 2 说明: 8 的平方根是 2.82842…, 由于返回类型是整数,小数部分将被舍去。 Descrip...

weixin_43858604的博客 458

极客时间算法课笔记整理12——理论讲解+面试题实战:二分查找

这里写目录标题二分查找面试题[69. Sqrt(x)](https://leetcode.com/problems/sqrtx/) 二分查找 适合的规则: sorted(单调递增或者递减) bounded(存在上下界) Accessible by index(能够通过索引访问):链表不适合,数组适合、 二分查找的代码: 面试题 69. Sqrt(x) 我的代码: 错误:测试案例中的2147395599无法通过,因为是int类型的最大整数值,tmp计算会超过int的取值范围 class Solutio

weixin_44436378的博客 536

leetcode 69. Sqrt(x)

#coding=gbk ''' leetcode 69. Sqrt(x) 实现对于整数求平方根,并对求出的平方根取整数 Implement int sqrt(int x). 使用二分查找算法 ''' class Solution: def mySqrt(self, x: int) -> int: start=0 end=x//2+2 ...

WYXHAHAHA123的博客 202
上一篇: python报错——Loaded runtime CuDNN library: 7.0.5 but source was compiled with: 7.1.4
下一篇: python语法——yield 使用解析
HappyRocking
博客等级 码龄12年 222粉丝 176原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值