633. Sum of Square Numbers
Leetcode 問題: 633. Sum of Square Numbers
Categories:
題目
Given a non-negative integer c, decide whether there’re two integers
a
andb
such thata^2 + b^2 = c
判斷一個非負整數是否為兩個整數的平方和
答案
Golang
func judgeSquareSum(checkNumber int) bool {
// 最小檢查數字
minCheckNumber := 0
// 最大檢查數字,檢查的數字開根號,為最大需要檢查的數字
maxCheckNumber := int(math.Sqrt(float64(checkNumber)))
for minCheckNumber <= maxCheckNumber {
// 當檢查的數字沒有全部檢查過
// 測試平方加總數字
checkSumSquareNumber := (minCheckNumber * minCheckNumber) + (maxCheckNumber * maxCheckNumber)
if checkSumSquareNumber < checkNumber {
// 假如「平方加總數字」小於「檢查的數字」,數字過小,將數字放大,最小檢查數字 ++
minCheckNumber++
} else if checkSumSquareNumber > checkNumber {
// 假如「平方加總數字」大於「檢查的數字」,數字過大,將數字縮小,最大檢查數字 --
maxCheckNumber--
} else {
// 假如「平方加總數字」等於「檢查的數字」,找到了!
return true
}
}
// 迴圈跑完都沒有找到
return false
}
完整程式碼
package main
import (
"fmt"
"math"
)
type Question struct {
// 參數
Parameter
// 答案
Answer
}
// 參數
type Parameter struct {
checkNumber int
}
// 答案
type Answer struct {
result bool
}
func main() {
QuestionList := []Question{
{
Parameter{5},
Answer{true},
},
{
Parameter{6},
Answer{false},
},
{
Parameter{1},
Answer{true},
},
{
Parameter{2},
Answer{true},
},
{
Parameter{3},
Answer{false},
},
{
Parameter{4},
Answer{true},
},
{
Parameter{104976},
Answer{true},
},
}
fmt.Printf("------------------------Leetcode Problem 167------------------------\n")
for _, question := range QuestionList {
// _, p := Question.Answer, Question.Parameter
param := question.Parameter
fmt.Printf("【input】:%v 【output】:%v\n", param, judgeSquareSum(param.checkNumber))
}
}
func judgeSquareSum(checkNumber int) bool {
// 最小檢查數字
minCheckNumber := 0
// 最大檢查數字,檢查的數字開根號,為最大需要檢查的數字
maxCheckNumber := int(math.Sqrt(float64(checkNumber)))
for minCheckNumber <= maxCheckNumber {
// 當檢查的數字沒有全部檢查過
// 測試平方加總數字
checkSumSquareNumber := (minCheckNumber * minCheckNumber) + (maxCheckNumber * maxCheckNumber)
if checkSumSquareNumber < checkNumber {
// 假如「平方加總數字」小於「檢查的數字」,數字過小,將數字放大,最小檢查數字 ++
minCheckNumber++
} else if checkSumSquareNumber > checkNumber {
// 假如「平方加總數字」大於「檢查的數字」,數字過大,將數字縮小,最大檢查數字 --
maxCheckNumber--
} else {
// 假如「平方加總數字」等於「檢查的數字」,找到了!
return true
}
}
// 迴圈跑完都沒有找到
return false
}