1. 程式人生 > >[leetcode]Python實現-367.有效的完全平方數

[leetcode]Python實現-367.有效的完全平方數

367.有效的完全平方數

描述

給定一個正整數 num,編寫一個函式,如果 num 是一個完全平方數,則返回 True,否則返回 False。

注意:不要使用任何內建的庫函式,如 sqrt。

示例

輸入: 16
輸出: True
輸入: 14
輸出: False


思路:老老實實遍歷的話會超時,於是使用二分查詢。

class Solution:
    def isPerfectSquare(self, num):
        """
        :type num: int
        :rtype: bool
        """
l = 1 h = num while l <= h: mid = (l+h)//2 t = mid**2 if t < num: l = mid + 1 elif t == num: return True else: h = mid - 1 return False

還有思路二:
通過列舉所有的完全平方數,1,4,9,16,25,36,49,64,81,100…等等,發現完全平方數的差都為奇數,即1,3,5,7,9,11,13,15…等等~所以可以判斷完全平方數應該是N個奇數的和。不過沒有第一種方法好。

    i = 1
    while num > 0:
        num -= i
        i += 2
    return num == 0

相關推薦

[leetcode]Python實現-367.有效完全平方

367.有效的完全平方數 描述 給定一個正整數 num,編寫一個函式,如果 num 是一個完全平方數,則返回 True,否則返回 False。 注意:不要使用任何內建的庫函式,如 sqrt。 示例 輸入: 16 輸出: True

[LeetCode] Valid Perfect Square 檢驗完全平方

Given a positive integer num, write a function which returns True if num is a perfect square else False. Note: Do not use any built-in library function

python基礎程式設計_2_完全平方

簡述:一個整數,它加上100和加上268後都是一個完全平方數,求100000之內滿足條件的數提問:請問該數是多少?#import math from numpy import* for i in ran

leetcode 367. 有效完全平方 python

給定一個正整數 num,編寫一個函式,如果 num 是一個完全平方數,則返回 True,否則返回 False。 說明:不要使用任何內建的庫函式,如  sqrt。 示例 1: 輸入:16 輸出:Tr

Leetcode 367. 有效完全平方 C++

題目: 給定一個正整數 num,編寫一個函式,如果 num 是一個完全平方數,則返回 True,否則返回 False。 說明:不要使用任何內建的庫函式,如  sqrt。 示例 1: 輸入:16 輸出:True 示例 2: 輸入:14 輸出:False 思路:

Leetcode 367——有效完全平方(C++)

給定一個正整數 num,編寫一個函式,如果 num 是一個完全平方數,則返回 True,否則返回 False。注意:不要使用任何內建的庫函式,如  sqrt。示例 1:輸入: 16 輸出: True示例 2:輸入: 14 輸出: False老老實實的去遍歷的話會超時,故用

LeetCode刷題記錄——第367題(有效完全平方

題目描述 給定一個正整數 num,編寫一個函式,如果 num 是一個完全平方數,則返回 True,否則返回 False。 說明:不要使用任何內建的庫函式,如 sqrt。 示例 1: 輸入:16 輸出:True 示例 2: 輸入:14 輸出:F

367. 有效完全平方

題目 給定一個正整數 num,編寫一個函式,如果 num 是一個完全平方數,則返回 True,否則返回 False。 說明:不要使用任何內建的庫函式,如 sqrt。 示例 1: 輸入:16 輸出:True 示例 2: 輸入:14 輸出:False 思路 方法一:使

367.有效完全平方

給定一個正整數 num,編寫一個函式,如果 num 是一個完全平方數,則返回 True,否則返回 False。 說明:不要使用任何內建的庫函式,如  sqrt。 示例 1: 輸入:16 輸出:True 示例 2: 輸入:14 輸出:False class Solu

LeetCode 279. 完全平方 (C#實現)

blog span code 一個數 ++ 表示 res 動態 分享 問題:https://leetcode-cn.com/problems/perfect-squares/ GitHub實現:https://github.com/JonathanZxxxx/Lee

Python經典練習題1:一個整數,它加上100後是一個完全平方,再加上168又是一個完全平方,請問該是多少?

span range pytho 能夠 break clas 完全平方數 imp 經典 Python經典練習題 網上能夠搜得到的答案為: for i in range(1,85): if 168 % i == 0: j = 168 / i;

LeetCode 279. 完全平方(Perfect Squares)

-a 題目 col min lee 狀態 res style turn 題目描述 給定正整數 n,找到若幹個完全平方數(比如 1, 4, 9, 16, ...)使得它們的和等於 n。你需要讓組成和的完全平方數的個數最少。 示例 1: 輸入: n = 12 輸出: 3

leetcode367:有效完全平方

思想: 1.定義變數l和h,存放中間變數 2.將l加h整除2等於mid,然後算出mid的平方t,最後比較t和num的大小。 3.若t<num,l等於mid+1;若t>num,h等於mid-1;若t=num,返回True 4.直到迴圈結束,返回False class S

【JS】有效完全平方 #數學 #二分查詢

給定一個正整數 num,編寫一個函式,如果 num 是一個完全平方數,則返回 True,否則返回 False。 說明:不要使用任何內建的庫函式,如 sqrt。 示例 1: 輸入:16 輸出:True 示例 2: 輸入:14 輸出:False 示例 3: 輸入:808201 輸出:

如何用JAVA實現找到100~999的完全平方(轉載自:邵發)

如何用JAVA實現找到100~999的完全平方數(轉載自:afanihao.cn) //主程式 package fuckthismy; public class helloworld { public s

LeetCode學習記錄(3)----完全平方

給定正整數 n,找到若干個完全平方數(比如 1, 4, 9, 16, ...)使得它們的和等於 n。你需要讓組成和的完全平方數的個數最少。 示例 1: 輸入: n = 12 輸出: 3 解釋: 12 = 4 + 4 + 4. 示例 2: 輸入: n = 13 輸出:

2018.11.5 有效完全平方

給定一個正整數 num,編寫一個函式,如果 num 是一個完全平方數,則返回 True,否則返回 False。 說明:不要使用任何內建的庫函式,如  sqrt。 示例 1: 輸入:16 輸出:True 示例 2: 輸入:14 輸出:False class Solu

LeetCode367題:有效完全平方

這道題就是讓你寫一個函式用來判斷一個是num是否為某個數m的平方的。 解法一:暴力搜尋法 判斷一個數是不是某個數的平方,暴力一點的想法,就是從i = 1開始迴圈,如果i*i小於num,則i++;如果等於num,則返回true;如果大於num,則返回false。 public s

python中判斷是否為完全平方(在9999平方的範圍內)

# -*- coding: utf-8 -*- """ Spyder Editor This is a temporary script file. """ num=input("Please inp

[Leetcode]279.完全平方

最開始的時候,我想到的動態方程很簡單,就是 dp[i]=min(dp[i],dp[i-平方數]+1) 其中i-平方數一定要大於0要不然就會越界。這個思路很簡單,舉個例子: dp[5]=min(dp[5-1^2]+1,dp[5-2^2]+1,dp[5]) 這表示5可以如下組合: dp[5] = min