题目链接: https://leetcode-cn.com/problems/valid-perfect-square/ 从num的一半开始查找,然后每次折半找中间的数字 只要是连续的函数,求其中一个某一个符合要求的点的时候,大多数情况下,都可以使用牛顿迭代 对于这道题,函数表达式可以理解为: 其中,x是我们想要求得的值,num为程序输入的值 牛顿法的迭代思路如下: 借用wiki的动图,整个流程如下: 题目:
解题思路:
方法一:二分法
方法二:牛顿迭代
处的切线斜率
,并且穿过点
的直线,与x轴的交点的x坐标
,即求方程的解:
表示函数图像左右平移
个单位,高中(初中?)知识,左加右减,目的使得函数图像当
时,直线函数
表示切线方程的斜率
为本次需要求得的值,转换后的表达式为:
,带入上面的式子可得到:
继续迭代,直到找到使得原始式子
的解
代码实现:
方法一:
class Solution: def isPerfectSquare(self, num: int) -> bool: if num < 2: return True left, right = 0, num // 2 while left <= right: mid = (left + right) // 2 if mid == 0: left = mid + 1 continue tmp = num // mid mod = num % mid if tmp == mid and mod == 0: return True elif tmp > mid: left = mid + 1 else: right = mid - 1 return False
方法二:
class Solution: def isPerfectSquare(self, num: int) -> bool: if num < 2: return True x = num // 2 while x * x > num: x = (x + num // x) // 2 return x * x == num
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算