zoukankan      html  css  js  c++  java
  • leetcode-633-Sum of Square Numbers

    题目描述:

    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

     

    要完成的函数:

    bool judgeSquareSum(int c) 

     

    说明:

    1、这道题给定一个非负整数c,要求判断c能不能拆成两个整数的平方和。

    2、这道题我们可以用判断法也可以用生成法,但这道题用生成法来做,时间复杂度比较高,还不如用判断法来做。

    我们先找到有可能的整数的上限,比如要判断的数c是27,那么整数上限就是5。

    再定义一个下限,从0开始。

    我们判断上限和下限的平方和,大于还是小于,或者是等于c。

    如果大于c的话,那么上限要减一。

    如果小于c的话,那么下限要加一。

    如果等于,那么返回true。

    最终如果下限超过上限,那么返回false。

     

    用这种寻找-判断的方法来做,是比较快的方法。

    如果同学有更快的方法,欢迎分享在评论区~~

    代码如下:

        bool judgeSquareSum(int c) 
        {
            int uplim=floor(sqrt(c)),lowlim=0,t;//uplim是上限,lowlim是下限,从0开始
            while(lowlim<=uplim)//退出循环条件是下限超过上限
            {
                t=lowlim*lowlim+uplim*uplim;
                if(t<c)
                    lowlim++;
                else if(t>c)
                    uplim--;
                else
                    return true;
            }
            return false;
        }
    

    上述代码实测6ms,beats 87.28% of cpp submissions。

  • 相关阅读:
    ASP.NET 页面间数据传递的方法
    ASP.NET中实现页面间数据传递的方法
    C# 连接SQL数据库
    C# 通过url地址获取页面内容
    JS弹窗带遮蔽的功能
    C# Code First 实例学习
    CS窗体程序数据列表分页
    关于RDLC报表打印预览界面显示页码问号的问题
    C#Dictionary键值对取值用法
    分别获取一个字符串中的字母和数字
  • 原文地址:https://www.cnblogs.com/chenjx85/p/9184261.html
Copyright © 2011-2022 走看看