2.6 練習
基礎難度
633. Sum of Square Numbers
Two Sum 題目的變形題之一。
題解
解題思路
- 本題需要判斷是否存在兩個非負整數 和 ,使得 ,其中 是輸入的整數。
- 雙指針法:
- 設置兩個指針:左指針 ,右指針 。
- 計算當前平方和 :
- 如果 ,返回
True
。 - 如果 ,增加 。
- 如果 ,減少 。
- 如果 ,返回
- 如果指針相交且沒有找到結果,返回
False
。
class Solution:
def judgeSquareSum(self, c: int) -> bool:
a, b = 0, int(c**0.5) # 初始化指針
while a <= b:
square_sum = a * a + b * b
if square_sum == c:
return True
elif square_sum < c:
a += 1 # 增加左指針
else:
b -= 1 # 減少右指針
return False
複雜度分析
- 時間複雜度: ,指針從兩端向中間收攏,最多執行 次迭代。
- 空間複雜度: ,僅使用了固定數量的變數。
680. Valid Palindrome II
Two Sum 題目的變形題之二。