69. x的平方根 https://leetcode-cn.com/problems/sqrtx/

实现 int sqrt(int x) 函数。

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

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

解:

二分,不断枚举可能的结果,判断其平方和x的关系。这题二分的过程中考虑直接用浮点型来处理,比用整型处理更通用。

class Solution:
def mySqrt(self, x: int) -> int:
if x <= 1:
return x low, high = 0., float(x)
while abs(high - low) > 1e-5:
mid = (high + low)/2
y = mid*mid if y == float(x):
return int(mid)
elif y < float(x):
low = mid # 因为是浮点型,直接mid赋给low就行
else:
high = mid
return int(high)

  

牛顿迭代法,以直线代替曲线,用一阶泰勒展式(即在当前点的切线)代替原曲线,求直线与 x 轴的交点,重复这个过程直到收敛。

如果要求2的平方根,令f(x)=x2 -2,如下图。

from https://leetcode-cn.com/problems/sqrtx/solution/niu-dun-die-dai-fa-by-loafer/

如何通俗易懂地讲解牛顿迭代法求开方?数值分析? - 马同学的回答 - 知乎 https://www.zhihu.com/question/20690553/answer/146104283

所以要求给定的 X 的平方根,xn+1 = xn -  (xn2 - X) / 2x,迭代到满足逼近精度即可。考虑到这题要求向下取整。

class Solution:
def mySqrt(self, x: int) -> int:
if x <= 1:
return x
cur = x
while True:
pre = cur
cur = (cur + x / cur) / 2
if abs(cur - pre) < 1e-5:
return int(cur)

 

367. 有效的完全平方数 https://leetcode-cn.com/problems/valid-perfect-square/

给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。

说明:不要使用任何内置的库函数,如  sqrt。

解:

先按浮点型计算一下给定数的平方根,再取整后平方一下和num比较,相等的话即为完全平方数。

class Solution:
def isPerfectSquare(self, num: int) -> bool:
if num <= 1:
return True
low, high = 0., float(num)
while abs(high - low) > 1e-5:
mid = (high + low)/2
y = mid*mid if y == float(num):
return True
elif y < float(num):
low = mid
else:
high = mid return True if int(high) ** 2 == num else False
class Solution:
def isPerfectSquare(self, num: int) -> bool:
if num <= 1:
return True
cur = num
while True:
pre = cur
cur = (cur + num/cur) /2
if abs(cur-pre) < 1e-5:
return True if int(cur) ** 2 == num else False

  

直接按整数二分,找不到整数平方根就不是完全平方数。

class Solution:
def isPerfectSquare(self, num: int) -> bool:
if num <= 1:
return True
low, high = 0, num
while low <= high:
mid = low + (high - low)//2
y = mid ** 2
if y < num:
low = mid + 1
elif y > num:
high = mid - 1
else:
return True
return False

  

Leetcode-二分的更多相关文章

  1. leetcode二分查找问题整理

    自从做完leetcode上的三道关于二分查找的题后,我觉得它是比链表找环还恶心的题,首先能写出bugfree代码的人就不多,而且可以有各种变形,适合面试的时候不断挑战面试者,一个程序猿写代码解决问题的 ...

  2. leetcode 二分查找

    https://oj.leetcode.com/problems/search-for-a-range/就是一个二分查找,没事练练手 public class Solution { public in ...

  3. Leetcode: 二分搜索法

    package com.LeetCode; /** * 算法:二分搜索法查找一个值,并返回索引值 * https://leetcode.com/problems/search-insert-posit ...

  4. 算法leetcode二分算法

    二分算法通常用于有序序列中查找元素: 有序序列中是否存在满足某条件的元素: 有序序列中第一个满足某条件的元素的位置: 有序序列中最后一个满足某条件的元素的位置. 思路很简单,细节是魔鬼. 一.有序序列 ...

  5. [leetcode]二分查找总结

    Search for a Range 1.最简单的想法,用最普通的二分查找,找到target,然后向左右扩张,大量的重复的target,就会出现O(n)效率. class Solution { pub ...

  6. leetcode 二分查找 Search in Rotated Sorted ArrayII

    Search in Rotated Sorted Array II Total Accepted: 18500 Total Submissions: 59945My Submissions Follo ...

  7. Leetcode 二分查找 Search Insert Position

    本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie Search Insert Position Total Accepted: 14279 T ...

  8. leetcode 二分查找 Search in Rotated Sorted Array

    Search in Rotated Sorted Array Total Accepted: 28132 Total Submissions: 98526My Submissions Suppose ...

  9. leetcode二分查找相关

    目录 33/81搜索旋转排序数组 34在排序数组中查找元素的第一个和最后一个位置 35搜索插入位置 74搜索二维矩阵 300最长上升子序列,354俄罗斯套娃信封问题 33/81搜索旋转排序数组 假设按 ...

  10. 【Leetcode 二分】 滑动窗口中位数(480)

    题目 中位数是有序序列最中间的那个数.如果序列的大小是偶数,则没有最中间的数:此时中位数是最中间的两个数的平均数. 例如: [2,3,4],中位数是 3 [2,3],中位数是 (2 + 3) / 2 ...

随机推荐

  1. springboot之对之前的补充

    Spring Cloud 初级 一. Spring Boot 回顾   1 什么是 Spring Boot?   Spring Boot 是在 Spring 的基础之上产生的(确切的说是在 Sprin ...

  2. 一键洞察全量SQL ,远离性能异常

    随着云数据库业务规模不断扩大,用户对安全审计.性能智能分析等高级特性的要求越来越高.如何安全审计SQL?如何快速定位性能异常?如何保护数据库安全?是每个云厂商不得不思考的问题. 华为云DAS服务提供的 ...

  3. Android开发之华为手机无法看log日志解决方法(亲测可用华为荣耀6)

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985, 转载请说明出处. 在上家公司上班的时候,公司配了华为荣耀6的测试机,发现在eclipse下 无法查看 ...

  4. IntelliJ IDEA远程Debug Linux的Java程序,找问题不要只会看日志了

    1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! 我们习惯于在本地开发的时候debug,能快速定位与解决问题,那部署在服务器上是不是就没有办法了呢?只能通过查看日志来定位? ...

  5. latex pdf 转 eps

    latex pdf 转 eps 方法一,使用命令行,缺点是得到的文件有点大 pdf 转 ps, pdf2ps input.pdf output.ps ps 转 eps, ps2eps input.ps ...

  6. xUnit测试的顺序执行总结

    cmliu 1,演示环境:windows 10企业版+Visual Studio 2019:.NET Core3.1:xUnit 2.4.1:.NET Standard 2.0.3 3,场景描述:前几 ...

  7. 10.深入k8s:调度的优先级及抢占机制源码分析

    转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 源码版本是1.19 上一篇我们将了获取node成功的情况,如果是一个优先pod获取nod ...

  8. 一文带你了解Sql优化

    我们后台开发人员每天都难免与数据库打交道,那么你在写sql语句的时候有注重到自己sql的效率吗?当你sql查询速度很慢的时候你有想过是你的sql语句造成的吗?看完这篇文章,我相信你会对sql优化有了一 ...

  9. FFmpeg开发笔记(四):ffmpeg解码的基本流程详解

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  10. 云计算openstack核心组件——glance— 镜像服务(6)

    一.glance介绍:              Glance是Openstack项目中负责镜像管理的模块,其功能包括虚拟机镜像的查找.注册和检索等. Glance提供Restful API可以查询虚 ...