目录

一:题目链接

二:题目思路

三:代码实现


一:题目链接

        题目的要求是找出当前数组能组成三角形三元组的个数。

二:题目思路

        有一种暴力枚举解法,利用三层 for 循环来一一枚举三元组的情况,如图:

这种解法的时间复杂度已经达到 o(n^3) ,会超时,这不是最优的解法。

        有另一种解法,利用数组的单调性配合双指针的算法思想。

        首先,先把数组从小到大排个序,然后,先固定该数组中最大的元素(如上图中的 n ),定义两个指针,一个指向数组起始下标,另一个指向该数组中最大的元素上一位的下标,现在有两种情况。

        如果当前的 left 和 right 的元素加起来比 n 大,证明该组合的三元组是可以构建三角形的,并且也侧向说明 如果 left 往右边遍历数组再和 right(不动)下标元素加起来也肯定 比 n 大,所以,期间的这种情况有 right - left 种,就不需要一次次遍历判断了,再 right--,进入下一次判断。

        如果 当前的 left 和 right 的元素加起来比 n 小,证明该组合的三元组不能构建三角形,并且也侧向说明 如果 right 往左边遍历数组再和 left(不动)下标元素加起来也肯定 比 n 小,就不需要一次次遍历判断了,直接 left++,进入下一次判断。

        以上这样,我们就完成了一个当前数组最大的数的判断,以此不断往上循环这个过程。

三:代码实现

     //排序数组Arrays.sort(nums);//计数器int sum = 0;//先固定最大的数for(int i = nums.length - 1;i > 1;i--) {int left = 0;int right = i - 1;while(left < right) {if(nums[left] + nums[right] > nums[i]) {sum += right - left;right--;}else {left++;}}}return sum;

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Rust在医疗系统中的应用:安全、性能与合规性实践(上)

Rust在医疗系统中的应用:安全、性能与合规性实践 摘要 医疗系统对软件安全与性能存在严苛双重需求,既需抵御内存漏洞、数据加密风险等安全威胁(如历史医疗设备因软件问题召回案例所示),又需满足电子健康记录(EHR)系统、医学影像处理等高并发数据场景的性能要求,同时需…

读写锁 shared_mutex 共享互斥量介绍

文章目录读数据对数据没有影响&#xff0c;为什么还需要shared_mutex1. 保证读取数据的“一致性”和“时效性”2. 协调“读”与“写”的竞争关系总结好的&#xff0c;我们来详细介绍 C17 中的 std::shared_mutex&#xff08;共享互斥量&#xff0c;俗称读写锁&#xff09;的使用…

Nestjs框架: 基于装饰器与Guards的完成RBAC权限系统设计与实现

概述 在现代权限管理系统中&#xff0c;RBAC&#xff08;基于角色的访问控制&#xff09;是广泛采用的一种模型RBAC 核心思想是通过角色来管理用户权限通过角色绑定用户、资源和权限&#xff0c;实现细粒度的访问控制为了实现这一目标&#xff0c;我们需要在数据库中设计合理的…

机器学习如何精准预测高值

一、概念理解“机器学习对于高值的预测保守”&#xff0c;这是建模里很常见的现象&#xff0c;尤其在生态、气候、遥感这类数据分布高度偏斜的场景。通常可以从以下几个角度理解&#xff1a;1. 数据分布与样本稀缺在训练集里&#xff0c;高值样本往往非常少&#xff0c;远低于中…

蜂窝物联网模组:智能门禁产品上的关键部件

随着物联网技术的快速发展&#xff0c;蜂窝物联网模组正逐步成为智能门禁系统的关键通信组件。蜂窝模组凭借其广覆盖、高可靠性和低功耗特性&#xff0c;正从传统门禁系统的补充角色转变为智能门禁的核心通信组件&#xff0c;尤其在智慧社区、商业楼宇和政府机构等场景中展现出…

[光学原理与应用-417]:非线性光学 - 线性光学(不引发频率的变化)与非线性光学(引发频率变化)的异同

一、定义与物理机制&#xff1a;线性响应 vs 非线性响应线性光学定义&#xff1a;光与物质相互作用时&#xff0c;介质的极化强度与入射光电场强度呈线性关系&#xff08;Pϵ0​χ(1)E&#xff09;&#xff0c;输出光强与输入光强成正比&#xff08;Iout​∝Iin​&#xff09;-…

深入探讨AI在三大核心测试场景中的应用

随着人工智能&#xff08;AI&#xff09;技术的迅猛发展&#xff0c;软件测试领域正经历深刻变革。传统手动测试和基于规则的自动化测试已难以应对日益复杂的系统架构与海量用户行为。AI测试通过引入机器学习、自然语言处理、计算机视觉等技术&#xff0c;显著提升了测试效率、…

[linux仓库]性能加速的隐形引擎:深度解析Linux文件IO中的缓冲区奥秘

&#x1f31f; 各位看官好&#xff0c;我是egoist2023&#xff01; &#x1f30d; Linux Linux is not Unix &#xff01; &#x1f680; 今天来学习C语言缓冲区和内核缓存区的区别以及缓存类型。 &#x1f44d; 如果觉得这篇文章有帮助&#xff0c;欢迎您一键三连&#xff0c…

一、计算机的数据存储

计算机的世界只有0和1。 1.1 进制 十进制整数->二进制整数&#xff1a;除2倒取余二进制->十进制&#xff1a;权值相加法 结论&#xff1a;1位8进制值 3位二进制值&#xff0c;1位十六进制值 4位二进制值 public class JinZhiDemo {public static void main(String[]…

SpringBoot集成XXL-JOB保姆教程

第一步&#xff1a; 下载xxl-job源码到本地&#xff0c;地址如下&#xff1a; xxl-job: 一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线&#xff0c;开箱即用。 第二步&#xff1a; 创建…

Debezium日常分享系列之:Debezium 3.2.2.Final发布

Debezium日常分享系列之&#xff1a;Debezium 3.2.2.Final发布Debezium CoreConnector启动时出现难以理解的错误临时阻塞快照失败可能导致数据丢失的问题修复Debezium for OracleDebezium CoreConnector 启动时出现难以理解的错误 我们解决了一个问题&#xff0c;即连接器会因…

Zoom AI 技术架构研究:联合式方法与多模态集成

一、研究背景与概述 在当今数字化转型加速的背景下,人工智能技术正深刻改变企业协作与沟通方式。作为全球领先的视频会议平台,Zoom 已从单纯的通信工具转型为全面的生产力平台,而其 AI 技术架构是这一转变的核心驱动力。本报告将深入分析 Zoom 的 AI 技术架构,特别是其创新…

排序-快速排序 O(n log n)

快排&#xff1a;1、设定一个中间值 q[ lr >>1 ] , 让左右区间来比较2、左边通过 i 依次比较&#xff0c;如果比这个中间值小&#xff0c;就继续 , 直到不符合3、右边通过 j-- 依次比较&#xff0c;如果比这个中间值大&#xff0c;就继续 &#xff0c;直到不符合4、两边…

【Proteus仿真】定时器控制系列仿真——LED小灯闪烁/流水灯/LED灯带控制/LED小灯实现二进制

目录 0案例视频效果展示 0.1例子1&#xff1a;基于AT89C51单片机的定时器控制小灯闪烁 0.2例子2&#xff1a;基于AT89C51单片机的定时器T0流水灯 0.3例子3&#xff1a;基于AT89C51单片机的定时器控制LED灯带 0.4例子4&#xff1a;基于AT89C51单片机的定时器控制LED闪烁 0…

进阶向:密码生成与管理工具

密码生成与管理工具&#xff1a;从零开始的完全指南在现代数字生活中&#xff0c;密码是保护个人信息和账户安全的第一道防线。随着网络服务的普及&#xff0c;每个人平均需要管理数十个不同账户的密码。一个强大且独特的密码通常应包含12个以上字符&#xff0c;混合大小写字母…

解决 Gitee 中 git push 因邮箱隐私设置导致的失败问题

解决 Gitee 中 git push 因邮箱隐私设置导致的失败问题 在使用 Git 向 Gitee 远程仓库推送代码时&#xff0c;可能会遇到因邮箱隐私设置引发的 git push 失败情况。最近我就碰到了&#xff0c;现在把问题现象、原因和解决方法分享出来。 一、错误现象 执行 git push -u origin …

Flutter的三棵树

“三棵树”是 Flutter 渲染和构建UI的核心机制&#xff0c;理解它们对于掌握 Flutter 至关重要。这三棵树分别是&#xff1a; Widget 树 Element 树 RenderObject 树 它们协同工作&#xff0c;以实现 Flutter 的高性能渲染和高效的响应式编程模型。 Flutter 是声明式的UI&…

同一台nginx中配置多个前端项目的三种方式

目录 第一种方式:配置多个二级域名 第二种方式:配置端口转发(不推荐) 第三种方式:同一个server中基于location配置(重点讲解) 第一种方式:配置多个二级域名 一个域名下面申请多个二级域名,每个二级域名配置一个vue前端项目,这个很好配置,在这里不再详细说明。 …

第二家公司虽然用PowerBI ,可能更适合用以前的QuickBI

第二家公司虽然用PowerBI &#xff0c;可能更适合用以前的QuickBI现在回想一下&#xff0c;第二家公司数据源是MySQL &#xff0c;常规报表是用excel报表&#xff0c;另外还做了一张能发布到web的看板供运营使用。基于基本情况&#xff0c;quickbi 的早期版本是合适的&#xff…

STM32 USBx Device HID standalone 移植示例 LAT1466

关键字&#xff1a;USBx&#xff0c; Device, HID&#xff0c;standalone 1.设计目的 目前 USBx Device standalone 的官方示例较少&#xff0c;不过使用 STM32CubeMX 可以快速地生成 USBx Device 相关类的示例工程&#xff0c;会很方便大家的开发。这里以 NUCLEO-H563 为例&…