zoukankan      html  css  js  c++  java
  • leetcode 633. 平方数之和

    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
    输出:true

    提示:

    • 0 <= c <= 2^31 - 1

    法一:

    class Solution {
    public:
        bool judgeSquareSum(int c) {
            if(c == 0) return true;
            int n = sqrt(c), a;
            for(a = 1; a<=sqrt(c); ++a){
                double b = sqrt(c-a*a);
                if(b == (int)b)
                    return true;
            }
            return false;
        }
    };

    时间:O(根号n)

    空间:O(1)

    法二: 双指针

    class Solution {
    public:
        bool judgeSquareSum(int c) {
            //if(c == 0) return true;
            long b = sqrt(c), a = 0;
            while(a<=b){
                long curr = a*a+b*b;//int溢出
                if(curr == c)
                    return true;
                else if(curr < c){
                    a++;
                }
                else
                    b--;
            }
            return false;
        }
    };

    时间:O(根号n)

    空间: O(1)

  • 相关阅读:
    南京周边城市两日游方案
    电梯演说
    需求分析
    敏捷开发
    课堂练习 选择团队类型
    结对项目小DEMO
    分析图书管理系统的5W1H
    项目风险分析作业
    旅游方案选择
    图书管理系统需求规格
  • 原文地址:https://www.cnblogs.com/AbsolutelyPerfect/p/14715597.html
Copyright © 2011-2022 走看看