当前位置: 首页 > news >正文

LeetCode 1925 统计平方和三元组的数目

探索平方和三元组:从问题到 Java 代码实现

在数学与编程的交叉领域,常常会遇到一些有趣且富有挑战性的问题。今天,就让我们深入探讨一下 “平方和三元组” 这个有趣的话题,并使用 Java 语言来实现计算满足特定条件的平方和三元组数量的功能。

一、问题描述:

一个 平方和三元组 (a,b,c) 指的是满足 a^{2} + b^{2} = c^{2} 的 整数 三元组 ab 和 c 。给你一个整数 n ,请你返回满足 1 <= a, b, c <= n 的 平方和三元组 的数目。

二、什么是平方和三元组:

  平方和三元组是指满足a^{2} + b^{2} = c^{2} 的整数三元组 a,b和 c。例如,(3,4,5)就是一个著名的平方和三元组,因为3^{2}+ 4^{2} =9+16=5^{2} 。

三、代码实现

方法一:暴力解法(三重循环):

public class SquareSumTriples {public static int countTriples(int n) {//计数器int count = 0;// 遍历a的取值for (int a = 1; a <= n; a++) {// 遍历b的取值for (int b = 1; b <= n; b++) {// 遍历c的取值for (int c = 1; c <= n; c++) {// 判断是否满足平方和条件if (a * a + b * b == c * c) {count++;}}}}return count;}//主函数public static void main(String[] args) {int n = 10;//输出System.out.println("满足条件的平方和三元组数目为: " + countTriples(n));}
}

在上述代码中,countTriples 方法通过三层嵌套的 for 循环,分别对 a,b,c 在  1到 n 的范围内进行遍历。对于每一组 a,b,c 的取值,使用 if 语句判断是否满足  a^{2} + b^{2} = c^{2}  的条件,如果满足,则将计数器 count 加1 。最后,返回 count 的值,即为满足条件的平方和三元组的数目。

这种暴力解法的优点是思路简单直接,易于理解和实现。然而,它的时间复杂度为O(n^{3}) ,当 n较大时,计算量会非常庞大,效率较低。

方法二:优化后的解法

为了提高效率,我们可以对上述代码进行优化。观察到对于给定的a  和 b,c 的值是由 a 和 b 决定的,即 c=\sqrt{a^{2}+b^{2}}。因此,我们可以减少一层循环,通过计算得到 c的值,并判断其是否满足条件。以下是优化后的代码:

public class SquareSumTriplesOptimized {public static int countTriples(int n) {int count = 0;// 遍历a的取值for (int a = 1; a <= n; a++) {// 遍历b的取值for (int b = 1; b <= n; b++) {int sumOfSquares = a * a + b * b;double cDouble = Math.sqrt(sumOfSquares);int c = (int) cDouble;// 判断c是否为整数且在范围内if (cDouble == c && c >= 1 && c <= n) {count++;}}}return count;}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("请输入整数n: ");int n = scanner.nextInt();System.out.println("满足条件的平方和三元组数目为: " + countTriples(n));scanner.close();}
}

在优化后的代码中,countTriples 方法使用两层嵌套的 for 循环遍历a和b的取值。对于每一组 a 和 b,先计算出它们的平方和 sumOfSquares,然后通过 Math.sqrt 方法计算出平方根 cDouble,并将其转换为整数 c。接着,通过判断 cDouble == c 来确定 c 是否为整数,以及判断 c 是否在1到 n的范围内。如果满足条件,则将计数器 count 加 1。最后,返回 count 的值。

这种优化后的解法时间复杂度为 O(n^{2}),相比暴力解法,效率得到了显著提高。

四、总结

通过对平方和三元组问题的探讨和 Java 代码实现,我们看到了不同解法在效率上的差异。在实际编程中,当面对类似问题时,我们应该思考如何优化算法,以提高程序的性能。暴力解法虽然简单直接,但在处理大规模数据时可能会遇到性能瓶颈。而通过对问题的深入分析,找到其中的规律和优化点,能够帮助我们设计出更高效的算法。希望这篇博客能够帮助读者更好地理解平方和三元组问题以及相关的编程技巧,在数学与编程的学习道路上更进一步。

以上就是关于平方和三元组问题的完整博客内容,你可以根据实际情况进行调整和修改。如果还有其他问题,欢迎随时交流。

相关文章:

LeetCode 1925 统计平方和三元组的数目

探索平方和三元组&#xff1a;从问题到 Java 代码实现 在数学与编程的交叉领域&#xff0c;常常会遇到一些有趣且富有挑战性的问题。今天&#xff0c;就让我们深入探讨一下 “平方和三元组” 这个有趣的话题&#xff0c;并使用 Java 语言来实现计算满足特定条件的平方和三元组…...

java开发入门学习三-二进制与其他进制

常见的进制 常用的进制有二进制&#xff0c;八进制&#xff0c;十进制&#xff0c;十六进制。而我们最熟悉的是十进制&#xff0c;他们分别是怎么表达的呢&#xff1f; 定义不同的进制&#xff0c;写法不同 二进制&#xff08;Binary&#xff09;&#xff1a; 使用前缀 0b 或…...

C/S软件授权注册系统(Winform+WebApi+.NET8+EFCore版)

适用软件&#xff1a;C/S系统、Winform桌面应用软件。 运行平台&#xff1a;Windows .NETCore&#xff0c;.NET8 开发工具&#xff1a;Visual Studio 2022&#xff0c;C#语言 数据库&#xff1a;Microsoft SQLServer 2012&#xff0c;Oracle 21c&#xff0c;MySQL8&#xf…...

Linux —— 管理进程

一、查看进程 运行态&#xff08;Running&#xff09; 定义&#xff1a;处于运行态的进程正在 CPU 上执行指令。在单 CPU 系统中&#xff0c;同一时刻只有一个进程处于运行态&#xff1b;在多 CPU 或多核系统中&#xff0c;可能有多个进程同时处于运行态。示例&#xff1a; 当…...

Diffusino Policy学习note

Diffusion Policy—基于扩散模型的机器人动作生成策略 - 知乎 建议看看&#xff0c;感觉普通实验室复现不了这种工作。复现了也没有太大扩展的意义。 Diffusion Policy 是监督学习吗 Diffusion Policy 通常被视为一种基于监督学习的方法&#xff0c;但它的实际训练过程可能结…...

【Python】*args和**kwargs

【Python】*args和**kwargs 一、*args: 接收不定数量的位置参数示例1&#xff1a;简单的加法计算器示例2&#xff1a;转发参数给另一个函数 二、**kwargs: 接收不定数量的关键字参数示例3&#xff1a;创建用户配置文件示例4&#xff1a;合并多个字典 三、组合使用*args和**kwar…...

使用正则表达式提取PDF文件页数的实现方案

文章目录 背景介绍实现原理代码实现1. 基础函数结构2. 页数提取逻辑3. 使用示例 正则表达式解析优点与局限性优点局限性 错误处理建议性能优化建议最佳实践建议总结参考资源 背景介绍 在Web应用开发中,我们经常需要获取上传PDF文件的页数信息。虽然可以使用pdf.js等第三方库,但…...

Android实现RecyclerView边缘渐变效果

Android实现RecyclerView边缘渐变效果 1.前言&#xff1a; 是指在RecyclerView中实现淡入淡出效果的边缘效果。通过这种效果&#xff0c;可以使RecyclerView的边缘在滚动时逐渐淡出或淡入&#xff0c;以提升用户体验。 2.Recyclerview属性&#xff1a; 2.1、requiresFading…...

springboot443旅游管理系统(论文+源码)_kaic

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统旅游管理系统信息管理难度大&#xff0c;容错率低&#…...

利用git上传项目到GitHub

GitHub是基于git实现的代码托管。git是目前最好用的版本控制系统了&#xff0c;非常受欢迎&#xff0c;比之svn更好。 GitHub可以免费使用&#xff0c;并且快速稳定。 利用GitHub&#xff0c;你可以将项目存档&#xff0c;与其他人分享交流&#xff0c;并让其他开发者帮助你一…...

Rust之抽空学习系列(四)—— 编程通用概念(下)

Rust之抽空学习系列&#xff08;四&#xff09;—— 编程通用概念&#xff08;下&#xff09; 1、函数 函数用来对功能逻辑进行封装&#xff0c;能够增强复用、提高代码的可读 以下是函数的主要组成部分&#xff1a; 名称参数返回类型函数体 1.1、函数名称 在Rust中&…...

K-Means 聚类:数据挖掘的瑞士军刀

引言 在数据科学领域&#xff0c;聚类算法是一种非常重要的无监督学习方法&#xff0c;它能够帮助我们发现数据中的自然分组或模式。其中&#xff0c;K-Means 聚类算法因其简单高效而成为最常用的聚类算法之一。无论是市场细分、社交网络分析&#xff0c;还是图像分割等领域&a…...

项目练习:若依-前端项目的目录结构介绍

文章目录 一、目录截图二、目录讲解 一、目录截图 二、目录讲解 1、首先&#xff0c;我们可以看到&#xff0c;这个VUE项目&#xff0c;只有一个App.vue&#xff0c;所以&#xff0c;它是一个单页面系统。 这个App.vue是根组件&#xff0c;root组件。 2、public目录 在Vue 3.…...

知网研学 | 知网文献(CAJ+PDF)批量下载

知网文献&#xff08;CAJPDF&#xff09;批量下载 一、知网研学安装二、插件及脚本安装三、CAJ批量下载四、脚本下载及PDF批量下载浏览器取消拦截窗口 一、知网研学安装 批量下载知网文件&#xff0c;格式为es6文件&#xff0c;需使用知网研学软件打开&#xff0c;故需先安装该…...

设计模式期末复习

一、设计模式的概念以及分类 二、设计模式的主题和意图 三、面向对象程序设计原则&#xff0c;记住名字&#xff0c;还要理解它的使用场景以及如何用&#xff1f; 四、松耦合、紧耦合、强关联、弱关联、静态复用、动态复用的概念&#xff0c;还有静态委派&#xff0c;动态委…...

CentOS7源码编译安装nginx+php+mysql

1.安装nginx 安装依赖 yum -y install gcc gcc-c wget automake autoconf libtool libxml2-devel libxslt-devel perl-devel perl-ExtUtils-Embed pcre-devel openssl openssl-devel 创建一个不能登录的nginx运行用户 groupadd www-data useradd -s /sbin/nologin -g www-d…...

linux CentOS系统上卸载docker

一、停止Docker服务 首先&#xff0c;需要停止Docker服务。使用systemctl命令来停止Docker服务&#xff1a; bash复制代码sudo systemctl stop docker二、卸载Docker软件包 接下来&#xff0c;使用CentOS的包管理器yum来卸载Docker软件包。根据安装的Docker版本和组件&#…...

css中相对定位的应用场景

元素位置微调 文本与图标组合微调&#xff1a;在网页设计中&#xff0c;经常会有文本和图标的组合&#xff0c;比如一个带有搜索图标的搜索框。可以使用相对定位来微调图标在搜索框内的位置。例如&#xff0c;有以下HTML结构&#xff1a; <input type"text" class…...

Android 获取屏幕物理尺寸

注&#xff1a;编译 sdk 需要使用 30 因为引入了 WindowMetrics、uild.VERSION_CODES.R 新 sdk 才存在的类和属性 某些场景处理 view &#xff0c;对 view 显示的位置要求比较精确&#xff0c;通常我们使用context.getResources().getDisplayMetrics().widthPixels 获取到的宽、…...

C缺陷与陷阱 — 8 编译与链接

目录 1 程序的编译过程 2 动态链接的优缺点 2.1 动态链接的优点 2.2 动态链接的缺点 2.3 只使用动态链接 3 函数库链接的5个特殊秘密 4 警惕Interpositioning 5 产生链接器报告文件 1 程序的编译过程 程序的编译过程是将源代码转换成计算机可以执行的机器代码的过程。…...

如何永久保存微信聊天记录?终极指南:从导出到年度报告完整流程

如何永久保存微信聊天记录&#xff1f;终极指南&#xff1a;从导出到年度报告完整流程 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHu…...

别再被CUDA版本搞懵了!PyTorch环境配置保姆级避坑指南(含conda与本地安装对比)

深度学习环境配置终极指南&#xff1a;PyTorch与CUDA版本匹配的实战解决方案 1. 理解CUDA与PyTorch版本冲突的本质 当你第一次在终端看到"RuntimeError: The detected CUDA version mismatches the version that was used to compile PyTorch"这个错误时&#xff0c;…...

终极MifareOneTool使用指南:如何零基础玩转MIFARE经典卡的Windows图形化神器

终极MifareOneTool使用指南&#xff1a;如何零基础玩转MIFARE经典卡的Windows图形化神器 【免费下载链接】MifareOneTool A GUI Mifare Classic tool on Windows&#xff08;停工/最新版v1.7.0&#xff09; 项目地址: https://gitcode.com/gh_mirrors/mi/MifareOneTool …...

OmenSuperHub深度解析:3个关键技术突破彻底改变惠普游戏本性能管理体验

OmenSuperHub深度解析&#xff1a;3个关键技术突破彻底改变惠普游戏本性能管理体验 【免费下载链接】OmenSuperHub 使用 WMI BIOS控制性能和风扇速度&#xff0c;自动解除DB功耗限制。 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否曾因官方Omen Ga…...

Polymarket套利机器人:DeFi预测市场的自动化交易策略与实现

1. 项目概述&#xff1a;一个捕捉Polymarket预测市场套利机会的自动化交易机器人 最近在DeFi和预测市场领域&#xff0c;Polymarket这个基于Polygon链的平台热度持续攀升。它本质上是一个事件预测市场&#xff0c;用户可以就各类现实世界事件&#xff08;比如“某球队能否赢得冠…...

Laravel集成DeepSeek AI:官方SDK配置与实战指南

1. 项目概述与核心价值最近在折腾一个AI相关的Laravel项目&#xff0c;需要集成一个靠谱的文本生成模型。市面上大模型API不少&#xff0c;但要么贵&#xff0c;要么不稳定&#xff0c;要么就是国内访问延迟感人。直到我发现了deepseek-php/deepseek-laravel这个包&#xff0c;…...

东南亚1.5亿数字钱包用户如何覆盖?Antom收单解决方案拆解

在东南亚&#xff0c;很多用户第一次完成线上付款可能不是通过信用卡&#xff0c;而是通过自己熟悉的本地电子钱包。从印尼的GoPay、DANA&#xff0c;到菲律宾的GCash&#xff0c;再到泰国的TrueMoney、马来西亚的Touch ‘n Go&#xff0c;电子钱包已经深度融入当地人的日常消费…...

从零开始在个人项目中接入Taotoken的完整步骤与体会

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 从零开始在个人项目中接入Taotoken的完整步骤与体会 最近在维护一个个人开发的智能写作助手项目&#xff0c;最初直接使用了某家模…...

别再手动画UML了!用IDEA Diagrams插件自动生成类关系图,附赠符号含义速查表

高效架构可视化&#xff1a;IDEA Diagrams插件全指南与UML符号解析 在软件开发过程中&#xff0c;清晰的架构设计是团队协作和代码维护的基石。传统的手绘UML类图不仅耗时费力&#xff0c;更难以与快速迭代的代码保持同步。JetBrains IDEA内置的Diagrams插件正是为解决这一痛点…...

Astra Toolbox终极指南:如何快速掌握高性能GPU加速3D重建

Astra Toolbox终极指南&#xff1a;如何快速掌握高性能GPU加速3D重建 【免费下载链接】astra-toolbox ASTRA Tomography Toolbox 项目地址: https://gitcode.com/gh_mirrors/as/astra-toolbox 还在为复杂的CT重建算法而烦恼吗&#xff1f;想要让医学影像处理和工业检测的…...