LeetCode in Python 69. Sqrt(x) (x的平方根)

ops/2024/9/23 10:25:26/

求x的平方根,第一想法可能是遍历0~x,求其平方,找到m^{2}=xm^{2}< x(m+1)^{2}>x但其时间复杂度为O(n),或是想到遍历0~M即可,其中M = x // 2,将时间复杂度降至O(n^{1/2})。本文利用二分思想,给出一种时间复杂度为O(logn)的代码实现,当x=10000时时间复杂度O(logn)远小于O(n^{1/2})。

示例:

图1 平方根输入输出示例图 

代码:

python">class Solution:def mySqrt(self, x):if x == 0:return 0l, r = 0, xres = 0while l <= r:m = (l + r) // 2if m**2 > x:r = m - 1elif m**2 < x:l = m + 1res = melse:return mreturn res

 解释:

1)只需注意一点,当m**2 < x时要及时更新res,因为可能不存在m^{2}=x的情况,这是返回的应该是m^{2}< x(m+1)^{2}>x情况下的m。


http://www.ppmy.cn/ops/17925.html

相关文章

UML类图

类图(Class diagram)是显示了模型的静态结构&#xff0c;特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图不显示暂时性的信息。类图是面向对象建模的主要组成部分。 类使用包含类名、属性(field) 和方法(method) 且带有分割线的矩形来表示属性/方法名称前加…

OpenHarmony硬件合成方案解析

本文档主要讲解在OpenHarmony中&#xff0c;硬件合成适配的方法及原理说明。 环境说明&#xff1a; OHOS版本&#xff1a;3.1-Release及以上 一、背景介绍 1.1 什么是合成 要理解什么是合成&#xff0c;合成做了什么&#xff1f;我们先通过分解设置界面来回答这个问题: 在…

【TCP:可靠数据传输,快速重传,流量控制,TCP流量控制】

文章目录 可靠数据传输TCP&#xff1a;可靠数据传输TCP发送方事件快速重传流量控制TCP流量控制 可靠数据传输 TCP&#xff1a;可靠数据传输 TCP在IP不可靠服务的基础上建立了rdt 管道化的报文段 GBN or SR 累计确认&#xff08;像GBN&#xff09;单个重传定时器&#xff08;像…

小程序变更主体还要重新备案吗?

小程序迁移变更主体有什么作用&#xff1f;小程序迁移变更主体的作用可不止变更主体这一个哦&#xff01;还可以解决一些历史遗留问题&#xff0c;比如小程序申请时主体不准确&#xff0c;或者主体发生合并、分立或业务调整等情况。这样一来&#xff0c;账号在认证或年审时就不…

密码学系列4-选择密文安全,同态加密安全性

本章将介绍Cramer-Shoup加密方案,并证明其安全性。最后讨论了同态加密方案的安全性证明 一、Cramer-Shoup加密 密钥生成 1.定义群 G G G,群的阶为 q q q,选取群的生成元

从递归角度串联二叉树-图论-动态规划

一、深度理解二叉树的前中后序遍历 二叉树遍历框架如下&#xff1a; void traverse(TreeNode* root) {if (root nullptr) {return;}// 前序位置traverse(root->left);// 中序位置traverse(root->right);// 后序位置 }先不管所谓前中后序&#xff0c;单看 traverse 函数…

牛客NC162 二叉树中和为某一值的路径(三)【中等 dfs C++、Java、Go、PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/965fef32cae14a17a8e86c76ffe3131f 思路 既然要找所有路径上节点和等于目标值的路径个数&#xff0c;那我们肯定先找这样的路径起点啊&#xff0c; 但是我们不知道起点究竟在哪里&#xff0c; 而且任意节点都有…

设计模式学习

设计模式学习 设计模式学习策略模式策略模式适用于以下场景&#xff1a; 设计模式学习 策略模式 策略模式适用于以下场景&#xff1a; 对象有多种行为或算法&#xff0c;需要根据不同情况选择不同的算法。系统中有多个类实现相同的接口或继承相同的抽象类&#xff0c;但具体…