Leetcode 挑战 Day 18 [ 367. Valid Perfect Square ]

367. Valid Perfect Square


今天我们一起挑战leetcode第367题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 = 14
Output: false

今天这题与我们昨天做过的sqrt(x)具有相关性,可以利用昨天写出来的程序码,来完成这题的要求。此题会给我们一整数,并要我们回传此数是否为完全平方数,是就回传True否则False。当然这题与昨天一样,题目要求不能使用内建的sqrt功能。

修改sqrt功能


我们可以参考昨天曾经实作过的sqrt功能,但与昨天不同,我们并非要求出某个数的根号取到整数,我们是要直接确认某数是否为完全平方数,意味着在我们找到题目给我们数的根号的范围时,要确认的是其是否为整数。

以下是python的程序码

class Solution:
    def isPerfectSquare(self, num: int) -> bool:
        guess = 1000
        while True:
            p = int(guess)
            q = p + 1
            guess = (guess + num / guess) / 2
            if p*p == num:  # 确认是完全平方数
                return True
            if p*p <= num and q*q > num:  # 非完全平方数,因其根号介於两整数之间
                return False

<<:  资料集格式 | ML#Day13

>>:  配置 Promethues 与 Grafana

「思考」是最困难的工作,这大概就是很少人花费精力思考的原因吧。

「思考」是最困难的工作,这大概就是很少人花费精力思考的原因吧。 Thinking is the ha...

[Day5] 语言模型(二)-N-gram实作

一. 前言 前一天已经说明N-gram的一些计算方式了,这篇会以实作'预测词'来作为N-gram的范...

[Day 27] - 『转职工作的Lessons learned』 - Cube.js(III)

今天要说在後端的Cube.js Server连线DB後,对DB的请求需要做什麽样的设置,也就是如何建...

[Day7] THM Source

昨天的题目主要都是暴力破解,相对之下感觉有一点点无聊,那今天我们来打一个简单的 Exploit 吧!...

[FGL] 程序开发(1) - 基本指令与流程控制

为了协助新进同学,仍应该介绍基本程序的写法 编写小程序验证的做法请参考第一章的套件介绍,hello...