633. 平方数之和(中等)

news2024/10/7 12:18:42

633. 平方数之和

  • 1. 题目描述
  • 2.详细题解
  • 3.代码实现
    • 3.1 Python
    • 3.2 Java
      • 内存溢出溢出代码
      • 正确代码与截图

1. 题目描述

题目中转:633. 平方数之和
在这里插入图片描述

2.详细题解

    本题是167. 两数之和 II - 输入有序数组(中等)题目的变型,由两数之和变为两数平方之和,判断是否存在满足条件的两个整数a和b,使之平方之和等于给定的整数c。
  对于给定整数c,a和b最小值为0,最大值为c的平方根,因此,两个双指针的初始值分别为0和c的平方根(取整数),算法如下:

  •   Step1:初始化:left=0,right=c的平方根取整;
  •   Step2:计算left和right指向数字平方之和;
  •   Step3:如果平方之和等于给定数字c,则中止返回True
  •   Step4:如果平方之和大于给定数字c,则右指针right减少1,让平方之和小一点;
  •   Step5:如果平方之和小于给定数字c,则左指针left增加1,让平方之和大一点;
  •   Step6:重复步骤Step2_Step5.

3.代码实现

3.1 Python

import math
class Solution:
    def judgeSquareSum(self, c: int) -> bool:
        left, right = 0 , int(math.sqrt(c))
        res = False
        while left <= right:
            sum = left ** 2 + right ** 2
            if sum == c:
                res = True
                break
            elif sum > c:
                right -= 1
            else:
                left += 1
        return res

在这里插入图片描述

3.2 Java

  • Java实现需要尤其注意的是,对于数字有数据类型,仔细查看题意要求的数字范围,因此需要使用long整数类型,否则程序会因为内存溢出导致错误结果,如下代码和截图所示:

内存溢出溢出代码

class Solution {
    public boolean judgeSquareSum(int c) {
        int left = 0, right = (int) Math.sqrt(c);
        int total = 0;
        boolean res = false;
        while (left <= right){
            total = left * left + right * right;
            if (total == c){res = true;break;}
            else if(total > c){right--;}
            else{left++;}
        }
        return res;
    }
}

在这里插入图片描述
  调整整数数据类型,重新debug代码:

正确代码与截图

class Solution {
    public boolean judgeSquareSum(int c) {
        long left = 0, right = (long) Math.sqrt(c);
        long total = 0;
        boolean res = false;
        while (left <= right){
            total = left * left + right * right;
            if (total == c){res = true;break;}
            else if(total > c){right--;}
            else{left++;}
        }
        return res;
    }
}

在这里插入图片描述

  执行用时不必过于纠结,对比可以发现,对于python和java完全相同的编写,java的时间一般是优于python的;至于编写的代码的执行用时击败多少对手,执行用时和网络环境、当前提交代码人数等均有关系,可以尝试完全相同的代码多次执行用时也不是完全相同,只要确保自己代码的算法时间复杂度满足相应要求即可,也可以通过点击分布图查看其它coder的code。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1866127.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数字图像分析(第三部分)

文章目录 第11章 基于概率图模型的图像分析概率有向图模型因子分解生成式模型链式图条件独立性有向图模型的马尔科夫毯概率无向图模型模型定义概率无向图模型的因子分解条件随机场条件随机场的定义条件随机场的预测算法第12章 运动分析运动相机建模光流运动表达方法运动估计准则…

二维数组广度优先遍历-腐烂的苹果

一、问题描述 二、解题思路 此问题通过广度优先遍历来解决&#xff0c;模拟苹果发霉变坏的过程 1.初始时遍历网格&#xff0c;借助队列来储存所有发霉的苹果&#xff0c;统计好苹果个数 2.每一分钟队列内发霉苹果都会对周围的苹果起作用&#xff08;向外部扩散&#xff09;&am…

Python 高级编程:文件操作与错误处理

在前几篇文章中&#xff0c;我们介绍了Python的基本语法、函数和模块以及面向对象编程。这些知识对于大部分日常编程问题已经足够&#xff0c;但对于需要分析大数据的人来说&#xff0c;这些还不够。本章将介绍Python的文件操作以及错误处理与调试。 目录 文件操作读文件写文…

鸿蒙开发系统基础能力:【@ohos.systemTime (设置系统时间)】

设置系统时间 本模块用来设置、获取当前系统时间&#xff0c;设置、获取当前系统日期和设置、获取当前系统时区。 说明&#xff1a; 本模块首批接口从API version 7开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import systemTime …

线性代数基础概念:行列式

目录 线性代数基础概念&#xff1a;行列式 1. 行列式的定义 1.1 递归定义 1.2 代数余子式定义 1.3 几何定义 2. 行列式的性质 2.1 行列式等于其转置的行列式 2.2 交换两行或两列&#xff0c;行列式变号 2.3 将一行或一列乘以一个数 k&#xff0c;行列式乘以 k 2.4 将…

初创企业合规管理中的企业合规义务边界问题

在初创企业的迅猛发展过程中&#xff0c;合规管理是确保公司可持续成长和避免潜在风险的关键因素。而在合规管理中&#xff0c;界定企业边界尤为重要&#xff0c;它关系到企业如何合理规划业务范围、管理内部外部关系以及维护企业形象和法律责任的清晰。 一、初创企业面临的合…

转让北京资产评估公司变更需要什么条件和要求

北京资产评估公司是有限责任公司。因为有限责任公司具有人合属性&#xff0c;股东的个人信用及相互关系直接影响到公司的风格甚至信誉&#xff0c;所以各国公司法对有限责任公司股东向公司外第三人的转让股权&#xff0c;多有限制性规定。大致可分为法定限制和约定限制两类。公…

没什么用的java技巧

1.将需要注入bean的方法,包装为静态方法,让其看起来不需要依赖注入等操作,但实际依然需要

关于mysq数据库备份的几个问题

1 mysql怎么双机热备&#xff1f; 或者怎么两个mysql服务器互相同步&#xff1f; MySQL的双机热备或两个MySQL服务器之间的互相同步&#xff0c;通常通过几种不同的同步机制来实现&#xff0c;这些机制确保了数据的实时更新和备份。以下是几种常见的同步方式及其实现步骤&…

程序员在企业中是如何做需求的

在企业中&#xff0c;一个需求从产生到完成生命周期是什么样的。 它可以分为这样的步骤&#xff1a; 需求分析 -> 设计&#xff08;原型、功能、接口设计&#xff09; -> 技术选型 -> 搭建项目框架 -> 编码&#xff08;实现业务逻辑&#xff09; -> 测试&#…

Python数据分析之-Oracle数据库连接

文章目录 cx_Oracle 介绍cx_Oracle运行原理cx_Oracle 安装linux环境安装windows环境安装 cx_Oracle 使用单独使用结合Pandas使用 参考资料 cx_Oracle 介绍 cx_Oracle 8是一个Python扩展模块&#xff0c;它提供了对Oracle数据库的访问能力。以下是cx_Oracle 8的一些关键特性和功…

springboot vue 开源 会员收银系统 (8) 收银台、开卡结算及订单的优化升级

前言 完整版演示 开发版演示 在之前的开发进程中&#xff0c;我们基本搭建了收银台的基础。这次着重梳理一下收银台相关功能的开发及优化情况。 1.会员查询与开卡 收银台新增加了会员筛选功能 并且会员和会员卡是一对多的关系 理论可以开无数张卡 默认选择一张卡 会员卡选择…

国家自然科学基金标书大全(2002-2024)

数据来源&#xff1a;在20世纪80年代初&#xff0c;为了促进中国的科技体制革新并改革科研资金分配机制&#xff0c;中国科学院的89位院士联名向党和国家领导人提出建议&#xff0c;设立了国家自然科学基金的设立。国自然基金自创立以来&#xff0c;根据国家发展科学技术方针、…

张大哥笔记:赚钱第一步,把手弄脏,准时出摊

出来混&#xff0c;最重要的是什么&#xff1f;是“出来”。同样的&#xff0c;赚钱第一步&#xff0c;也是先出来&#xff0c;立刻开始行动起来&#xff01; 想要赚钱&#xff0c;最关键的因素是什么&#xff1f;答案是“先出来”。赚钱这件事&#xff0c;本身就是反人性的&am…

引导过程与服务器控制

一、引导过程 1.开机自检 服务器主机开机以后&#xff0c;将根据主板 BIOS 中的设置对 CPU&#xff08;Central Processing Unit&#xff0c; 中央处理器&#xff09;、内存、显卡、键盘等设备进行初步检测&#xff0c;检测成功后根据预设的启动顺序移 交系统控制权&#xff0c…

深入学习Java1415新特性

一、超实用的Java14新特性 1.Java14新特性概述 2.环境安装 3.超实用新特性

png格式快速压缩该怎么做?在电脑压缩png图片的方法

png格式的图片如何快速压缩变小呢&#xff1f;现在网络的不断发展&#xff0c;图片是日常用来分享展示内容的一种常用手段&#xff0c;其中使用最多的一种图片格式就是png&#xff0c;png格式具有无损压缩支持透明底的特性&#xff0c;在很多的场景下都会使用。 现在图片的清晰…

2024体育赛事一波接一波,大学生借IKCEST国际大数据竞赛打造AI“嘴强”主播

2024德国欧洲杯激战正酣&#xff0c;不但比赛精彩纷呈&#xff0c;各种新科技还竞相“整活”。从虚拟广告技术到人工智能辅助裁判&#xff0c;令人目不暇接。而“AI体育”的想象空间&#xff0c;还不仅于此。 近日&#xff0c;2024IKCEST第六届“一带一路”国际大数据竞赛暨第…

ES6深潜指南:解锁JavaScript类与继承的高级技巧,让您的代码更加优雅

前言 随着前端技术的迅猛发展&#xff0c;JavaScript已经成为构建现代Web应用不可或缺的编程语言。ES6&#xff08;ECMAScript 2015&#xff09;引入了许多期待已久的特性&#xff0c;其中类&#xff08;Classes&#xff09;和继承机制的引入&#xff0c;极大地增强了JavaScrip…

ONLYOFFICE 桌面编辑器 8.1使用体验分享

目录 编辑器市场现状与用户选择 ONLYOFFICE桌面编辑器概览和功能 ONLYOFFICE桌面编辑器概览 功能丰富的PDF编辑器 演示文稿编辑器的创新 文档编辑的灵活性 电子表格的高级功能 语言和本地化 用户界面和体验 媒体播放 云服务和本地处理 跨平台支持 总结 在线亲身体…