給定乙個非負整數 c ,你要判斷是否存在兩個整數 a 和 b,使得 a2 + b2 = c。
示例1:
示例2:
可以看成是在元素為 0~target 的有序陣列中查詢兩個數,使得這兩個數的平方和為 target,如果能找到,則返回 true,表示 target 是兩個整數的平方和。
本題和 167. two sum ii - input array is sorted 類似,只有乙個明顯區別:乙個是和為 target,乙個是平方和為 target。本題同樣可以使用雙指標得到兩個數,使其平方和為 target。本題的關鍵是右指標的初始化,實現剪枝,從而降低時間複雜度。設右指標為 x,左指標固定為 0,為了使 02+
x20^2 + x^2
02+x
2 的值盡可能接近 target,我們可以將 x 取為 sqrt(target)。
class
solution
long
long index1 =0;
long
long index2 =
sqrt
(c);
while
(index1 <= index2)
else
if(sum > c)
else
}return
false;}
};
時間複雜度:o(n)
空間複雜度:o(1)
633 平方數之和
給定乙個非負整數 c 你要判斷是否存在兩個整數 a 和 b,使得 a2 b2 c 示例 1 輸入 c 5 輸出 true 解釋 1 1 2 2 5 示例 2 輸入 c 3 輸出 false 示例 3 輸入 c 4 輸出 true 示例 4 輸入 c 2 輸出 true 示例 5 輸入 c 1 輸出 ...
leetcode 633 平方數之和
給定乙個非負整數 c 你要判斷是否存在兩個整數 a 和 b,使得 a2 b2 c。示例1 輸入 5 輸出 true 解釋 1 1 2 2 5示例2 輸入 3 輸出 falsepublic class solution return false 雙指標列舉 class solution else if...
LeetCode 633 平方數之和
題目 給定乙個非負整數c,你要判斷是否存在兩個整數a和b,使得 a2 b2 c。示例1 輸入 5 輸出 true 解釋 1 1 2 2 5 示例2 輸入 3 輸出 false 思路 利用雙指標思想,左指標置0,右指標置目標值平方根向下取整。兩指標平方和比較 若迴圈結束未找到平方和與目標值相同的情況,...