问题

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3885 访问。

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

输入: 5

输出: True

解释: 1 * 1 + 2 * 2 = 5

输入: 3

输出: False


Given a non-negative integer c, your task is to decide whether there're two integers a and b such that a2 + b2 = c.

Input: 5

Output: True

Explanation: 1 * 1 + 2 * 2 = 5

Input: 3

Output: False


示例

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3885 访问。

public class Program {public static void Main(string[] args) {var num = 3;var res = CheckSumOfSquareNumbers(num);Console.WriteLine(res);num = 5;res = CheckSumOfSquareNumbers2(num);Console.WriteLine(res);Console.ReadKey();}private static bool CheckSumOfSquareNumbers(int c) {//算是暴力解法//不过没必要全部计算,否则肯定TLEvar sqrt = (int)Math.Sqrt(c);for(var i = 0; i <= sqrt; i++) {//计算值 c - i * idouble k = Math.Sqrt(c - i * i);//判定是否相待,这是常用的判定开根号与目标值是否相等的写法if((int)k == k) return true;}return false;}private static bool CheckSumOfSquareNumbers2(int c) {//双指针法var sqrt = (int)Math.Sqrt(c);//存放计算 平方的和 的值var sum = 0;//前后指针var i = 0;var j = sqrt;//指针碰撞时为止while(i <= sqrt) {sum = i * i + j * j;if(sum < c) {i++;} else if(sum > c) {j--;} else {return true;}}return false;}}

以上给出2种算法实现,以下是这个案例的输出结果:

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3885 访问。

False
True

分析:

显而易见,以上2种算法的时间复杂度均为: 

C#LeetCode刷题之#633-平方数之和( Sum of Square Numbers)相关推荐

  1. 633.平方数之和(Sum of Square Numbers)

    题目描述 给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c. 示例1: 输入: 5 输出: True 解释: 1 * 1 + 2 * 2 = 5 示例2: 输 ...

  2. LeetCode刷题笔记- 15.三数之和

    LeetCode刷题笔记- 15.三数之和 C语言 题目 注意点 C语言 /*** Return an array of arrays of size *returnSize.* The sizes ...

  3. 【leetcode刷题】21.三数之和——Java版

    ⭐欢迎订阅<leetcode>专栏,每日一题,每天进步⭐ 一题二写,三数之和,题解四瞅五瞄六瞧,水平还七上八下九流,十分辣鸡. --leetcode此题热评 前言 哈喽,大家好,我是一条. ...

  4. leetcode刷题:2.两数之和

    本篇博客介绍如何找到两数之和.获取相加的两个数获取最终target的方法. 先看如下图: 我们很容易想到暴力解法.即两次循环获取结果,第一次循环循环黑圈,我们先假定第一个黑圈中1,是我们要的数,然后接 ...

  5. LeetCode刷题笔记——001两数之和

    题目: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数组中同一个元素不能使用 ...

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

    点击蓝字"dotNET匠人"关注我哟 加个"星标★",每日 7:15,好文必达! 前文传送门: 上篇文章中一道数学问题 - 自除数,今天我们接着分析 LeetC ...

  7. 【leedcode刷题1】两数之和

    [leedcode刷题 1]两数之和 大家好,小生不才,从今天开始将自己刷题的过程记录在博客中,因为能力有限,所以如果有什么错的地方希望大家积极指正,不胜感激. 题目 给定一个整数数组 nums 和一 ...

  8. LeetCode(C++)刷题计划:15-三数之和

    15-三数之和 @Author:CSU张扬 @Email:csuzhangyang@gmail.com or csuzhangyang@qq.com Category Difficulty Pass ...

  9. LeetCode 633 平方数之和

    题目描述 给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c . 题解 和两数之和那道题目的求解方式类似,需要注意整数的溢出. 代码 class Solutio ...

最新文章

  1. [新手必看] 17个常见的Python运行时错误
  2. 跟着阿里大牛捞干货:2019这5本书带你玩转大数据
  3. MySQL教程(二)—— 关于在ACCESS中使用SQL语句
  4. STL各容器成员对比表
  5. activity finish后没有destroy_Activity 基础知识点
  6. C++ 不能在类体外指定关键字static
  7. edittext 点击区域外隐藏输入法
  8. [翻译]XNA 3.0 Game Programming Recipes之six
  9. 高并发之——Guava Cache
  10. 银行卡号自动识别,包括银行名称、英文缩写代号、LOGO
  11. 随机过程中均值、方差、协方差和相关函数的计算
  12. CFSSL 生成证书
  13. 数学/数论专题-学习笔记:狄利克雷卷积
  14. 迷失lost结局什么意思_《lost》《迷失》大结局,没看懂的进,详细讲解
  15. chrome用 --proxy-server 单独设置代理
  16. 一文让你彻底了解EMC防护器件之TVS
  17. 学士峡谷风景Mac壁纸分享
  18. 「Hortic Res」CsGPA1调控黄瓜耐寒性的分子机制
  19. Autodesk Revit
  20. python 绘制五星红旗(包含三角函数)

热门文章

  1. 每日一题(C语言基础篇)2
  2. MySQL安装错误——Access denied for user 'root'@'localhost' (using password: YES)
  3. C++ new一个数组时,指针移动程序崩溃问题
  4. Linux sed命令高级用法精讲
  5. 【Python - GPU】基于Python的GPU加速并行计算 -- pyCUDA
  6. 接口成员的特点 java 1614101629
  7. 吃货开发 阶段01 类的定义 方法的布局 0925
  8. vi撤销、恢复撤销和删除
  9. MNS消息服务计费处理参考
  10. Nexus修改admin密码及其添加用户