码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 633 平方数之和(多解题)

时间:2020-08-31 13:07:18      阅读:45      评论:0      收藏:0      [点我收藏+]

标签:OLE   solution   class   tco   return   int   范围   双指针   false   

LeetCode 633 平方数之和

题目描述:
给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c。

逆向双指针逼近
对于给定的整数target,可能存在的两个整数a、b均不可能大于floor(sqrt(c)), 因此在[0, floor(sqrt(c))]范围内寻找

执行用时:8 ms, 在所有 Java 提交中击败了11.74%的用户
内存消耗:36.5 MB, 在所有 Java 提交中击败了40.08%的用户

class Solution {
    public boolean judgeSquareSum(int c) {
        
        /*先对C进行开方并向下取整*/
        int n = (int)(Math.floor(Math.sqrt(c*1.0)));
        int a = 0, b = n;
        /*逆向双指针逼近*/
        while(a <= b) {
            double currSum = Math.pow(a,2) + Math.pow(b,2);
            if(Math.abs(currSum-c)<1e-6) {
                return true;
            }
            else if(currSum > c) {
                b--;
            }
            else {
                a++;
            }
        }

        return false;
    }
}

LeetCode 633 平方数之和(多解题)

标签:OLE   solution   class   tco   return   int   范围   双指针   false   

原文地址:https://www.cnblogs.com/CodeSPA/p/13557333.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!