กำลังสองสมบูรณ์ (Perfect Square)
ตัวเลขที่เป็นผลคูณของตัวเลขกับตัวเอง เช่น 9, 16, 81, 289
ปัญหา
รับตัวเลข num ตรวจสอบว่ามี m, n ทำให้ m² + n² = num หรือไม่
ตัวอย่าง
const num = 389;
389 = 17² + 10² → ผลลัพธ์ true
โค้ดตัวอย่าง (Two Pointers)
const num = 389;
const canSumSquares = (num = 2) => {
let left = 0, right = Math.floor(Math.sqrt(num));
while(left <= right){
if (left * left + right * right === num) { return true; }
else if (left * left + right * right < num) { left++; }
else { right--; }
}
return false;
};
console.log(canSumSquares(num));
ผลลัพธ์
true