633. Sum of Square Numbers

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

Two-pointers, time O(sqrt(N)), space O(1)

注意high可以从sqrt(c)开始算起,不用从c开始哦!

class Solution {
    public boolean judgeSquareSum(int c) {
        int low = 0;
        int high = (int) Math.sqrt(c);
        
        while (low <= high) {
            int sum = low * low + high * high;
            
            if (sum == c) {
                return true;
            } else if (sum < c) {
                ++low;
            } else {
                --high;
            }
        }
        
        return false;
    }
}

你可能感兴趣的:(633. Sum of Square Numbers)