Formatted question description: https://leetcode.ca/all/633.html

633. Sum of Square Numbers

Level

Easy

Description

Given a non-negative integer c, your task is to decide whether there’re two integers a and b such that a2 + b2 = c.

Example 1:

Input: 5

Output: True

*Explanation: 1 * 1 + 2 * 2 = 5

Example 2:

Input: 3

Output: False

Solution

Maintain two numbers low and high, which are 0 and the greatest integer less than or equal to the square root of c. While low < high, calculate sum = low * low + high * high. If sum == c, then the two integers are found, so return true. If sum > c, then sum is too large, so decrease high by 1. If sum < c, then sum is too small, so increase low by 1. If the two integers can’t be found, return false.

  • class Solution {
        public boolean judgeSquareSum(int c) {
            int low = 0, high = (int) Math.sqrt(c);
            while (low <= high) {
                int sum = low * low + high * high;
                if (sum == c)
                    return true;
                else if (sum > c)
                    high--;
                else
                    low++;
            }
            return false;
        }
    }
    
  • Todo
    
  • class Solution(object):
      def judgeSquareSum(self, c):
        """
        :type c: int
        :rtype: bool
        """
        n = int(c ** 0.5)
        start = 0
        end = n
        while start <= end:
          mid = start ** 2 + end ** 2
          if mid == c:
            return True
          elif mid < c:
            start += 1
          else:
            end -= 1
        return False
    
    

All Problems

All Solutions