633. 平方數之和 ( 列舉 + 二分查詢 )
LeetCode: 633. 平方數之和
二分查詢
通過迴圈 i 列舉 i * i 自身, 作為構成 c 的其中一個平方數,然後通過二分查詢找出剩下的另一個平方數。
如果找到另一個平方數,直接返回 true, 反之,繼續往後迭代。
二分查詢 AC Code
class Solution {
public boolean judgeSquareSum(int c) {
// 通過迴圈 i * i 自身 列舉其中一個平方數
// 剩下一個平方數通過二分查詢來確定有無
for(long i = 0; i * i <= c; i++){
int b = c - (int)(i * i);
if(bs(0, b, b)) {
// 找到了
return true;
}
}
return false;
}
public boolean bs(long l, long r, int a){
long left = l, right = r;
while(left <= right) {
long mid = left + (right - left) / 2;
if(mid * mid < a) left = mid + 1;
else if(mid * mid > a) right = mid - 1;
else return true;
}
return false;
}
}
相關文章
- 雜湊查詢 兩數之和
- Java列舉-通過值查詢對應的列舉Java
- 【Java】陣列二分查詢元素Java陣列
- 查詢——二分查詢
- 查詢固定條數的某個值之和
- 陣列的查詢(搜尋):線性查詢和二分法查詢陣列
- 二分查詢(一)——純粹的二分查詢
- Python查詢-二分查詢Python
- 二分查詢
- php陣列中二分查詢是什麼PHP陣列
- 【劍指offer】二分查詢二維陣列陣列
- 查詢演算法__二分查詢演算法
- 順序查詢和二分查詢
- PHP二分查詢PHP
- 二分查詢法
- 演算法訓練營第一天| 704 二分查詢 27 移除元素 977 有序陣列的平方演算法陣列
- 查詢演算法之二分查詢演算法
- 二分查詢 | 二分查詢的一種推薦寫法
- 查詢演算法集:順序查詢、二分查詢、插值查詢、動態查詢(陣列實現、連結串列實現)演算法陣列
- java陣列回顧---線性查詢最大值最小值---二分查詢Java陣列
- 微策略面試題:在旋轉後的陣列中查詢元素(二分查詢)面試題陣列
- 【資料結構】折半查詢(二分查詢)資料結構
- 二分插入與二分查詢
- 二分查詢(c++)C++
- BinarySearch(二分查詢)
- 704.二分查詢
- 詳解二分查詢
- Java 列舉查詢並不拋異常的實現Java
- 二分查詢【折半查詢】演算法 PHP 版演算法PHP
- 兩數之和,返回陣列下標陣列
- leetcode -- 二分查詢LeetCode
- PHP 實現二分查詢PHP
- 【演算法】二分查詢演算法
- python二分查詢模板Python
- 二分查詢成長錄
- 圖解--二分查詢樹圖解
- 二分搜尋(折半查詢)
- 二分查詢的定義