給定一個非負整數 c
,你要判斷是否存在兩個整數 a
和 b
,使得 a2 + b2 = c。spa
示例1:指針
輸入: 5code
輸出: Trueblog
解釋: 1 * 1 + 2 * 2 = 5class
示例2:循環
輸入: 3di
輸出: Falsewhile
利用雙指針思想,左指針置0,右指針置目標值平方根向下取整。兩指針平方和比較:co
若循環結束未找到平方和與目標值相同的狀況,則不存在。 block
public class P633 { public boolean judgeSquareSum(int c) { if (c < 0) { return false; } int left = 0; int right = (int) Math.sqrt(c); int curSum; while (left < right) { curSum = left * left + right * right; if (curSum > c) { right--; } else if (curSum < c) { left++; } else { return true; } } return false; } }