633 平方數之和

2021-10-02 19:41:48 字數 873 閱讀 3854

給定乙個非負整數 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,右指標置目標值平方根向下取整。兩指標平方和比較 若迴圈結束未找到平方和與目標值相同的情況,...