633. 平方数之和

633. 平方数之和

题目描述

给定一个非负整数 c ,你要判断是否存在两个整数 ab,使得 a2 + b2 = c。

示例1:

输入: 5
输出: True
解释: 1 * 1 + 2 * 2 = 5

示例2:

输入: 3
输出: False

贴出代码

class Solution {
    public boolean judgeSquareSum(int c) {
        int i = 0, j = (int)Math.sqrt(c);
        while(i <= j){
            int powSum = i * i + j * j;
            if (powSum == c){
                return true;
            }else if(powSum > c){
                j --;
            }else{
                i ++;
            }
        }
        return false;
    }
}
import . "math"

func judgeSquareSum(c int) bool {
    i := 0
    j := int(Sqrt(float64(c)))
    for i <= j {
        powSum := i * i + j * j
        if powSum == c{
            return true
        }else if powSum > c {
            j --
        }else{
            i ++
        }
    }
    return false
}

原文地址:https://www.cnblogs.com/Tu9oh0st/p/10961262.html

时间: 2024-11-06 07:11:37

633. 平方数之和的相关文章

C#刷遍Leetcode面试题系列连载(4):No.633 - 平方数之和

上篇文章中一道数学问题 - 自除数,今天我们接着分析 LeetCode 中的另一道数学题吧~ 今天要给大家分析的面试题是 LeetCode 上第 633 号问题, Leetcode 633 - 平方数之和 https://leetcode.com/problems/sum-of-square-numbers/ 题目描述 给定一个非负整数 c ,你要判断是否存在两个整数 a和 b,使得 \(a^2 + b^2 = c\). 示例1: 输入: 5 输出: True 解释: 1 * 1 + 2 * 2

【算法】将正整数表示为平方数之和

问题来源 Timus Online Judge 网站上有这么一道题目:1073. Square Country.这道题目的输入是一个不大于 60,000 的正整数,要求计算出该正整数最少能够使用多少个正整数的平方和来表示.这道题目的时间限制是 1 秒. 问题解答 <数论导引(第5版)>([英]G.H.Hardy.E.M.Wright 著,人民邮电出版社,2008年10月第1版)第 320 页有以下定理: 定理 369(Lagrange 定理): 每个正整数都是四个平方数之和 在这个定理中,平方

LeetCode 633. Sum of Square Numbers平方数之和 (C++)

题目: 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 分析: 给定一个非负整数c ,你要判断是否存在两个整数a和b,使

[LeetCode] 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 s

力扣(LeetCode)平方数之和 个人题解

给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c. 示例1: 输入: 5 输出: True 解释: 1 * 1 + 2 * 2 = 5 示例2: 输入: 3 输出: False 在这题里面,可以使用二分查找来缩小搜索的范围 由数学定理(我忘了具体的哪个定义)可知,a和b的具体取值范围落在0到根号c之间.然后简单运用二分法就能十分便捷找到答案了. 代码如下: class Solution { public: bool judgeSquareSum(int

正整数n拆分成几个不同的平方数——DFS&amp;&amp;打表

考虑将正整数n拆分成几个不同的平方数之和,比如30=1^2 + 2^2 + 5^2=1^2 + 2^2 + 3^2 + 4^2,而8不存在这样的拆分. 1 #include<bits/stdc++.h> 2 using namespace std; 3 4 const int maxn = 1000 + 10; 5 bool vis[maxn]; 6 vector<int>res; 7 8 bool dfs(int n) 9 { 10 //printf("%d\n&quo

三数之和,去除重复。

给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. 注意:答案中不可以包含重复的三元组. 思路1:仿照两数之和,不需要排序,但是会返回重复复的三元组,因此要去重,用标准库unique函数出重,仍通不过最后一个很多零的测试用例,但是还是把代码贴一下: 思路2:先排序,然后用滑动窗口法,找匹配的三元组,在数组值相同时,窗口左右游标滑动,来达到去重目的,排序复杂度nlogn,遍历两次数组,复

LeetCode 18. 4Sum (四数之和)

Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = target? Find all unique quadruplets in the array which gives the sum of target. Note: The solution set must not contain duplicate quadruplets. For exampl

Project Euler 98:Anagramic squares 重排平方数

Anagramic squares By replacing each of the letters in the word CARE with 1, 2, 9, and 6 respectively, we form a square number: 1296 = 362. What is remarkable is that, by using the same digital substitutions, the anagram, RACE, also forms a square num