算法005——有效三角形个数
力扣——有效三角形个数点击链接跳转

判断三条边是否能组成三角形,大家第一时间想到的就是两边之和大于第三边

但是运用这个方法,我们需要判断三次,有一个更简单的方法,只需要判断一次

因为 C 已经是三边之中最大的了,无论加不加第二条边,都会比第三条边大,所以无需判断第一张图片中的后两种情况。
先对整个数组排序
排序完成后,我们先固定最大的数,然后枚举剩下两个数
如果按顺序枚举,时间复杂度太大,我们先用剩下的数的 最小值 与 最大值
此时有两种情况
- a + b > c
此时,最小值 与 b 相加都大于 c,中间的数都 大于等于 a ,那么 中间的数 + b 都大于等于 c ,我们就不需要判断中间的数与 9 相加了,此时构成三角形的个数为 下标相减,那么 9 就没用了,让 right –

- a + b <= c
此时,最大值与 a 相加都小于等于 c,中间的数都小于等于 b ,那么 中间的数 与 a 相加都 小于等于 c,无需再判断 中间的数 与 a 相加,此时 a 没有用了,让 left++

然后 c = 10 的情况判断完了,再判断 c = 9,再重复上述循环。
class Solution {public int triangleNumber(int[] nums) {Arrays.sort(nums);int count = 0;for(int i = nums.length - 1;i >= 2;i--){//最少有三个数int left = 0;int right = i - 1;while(left < right){if(nums[left] + nums[right] > nums[i]){count += right - left;right--;}else{left++;}}}return count;}
}
可以点个赞 让我忘本一下试试吗

相关文章:
算法005——有效三角形个数
力扣——有效三角形个数点击链接跳转 判断三条边是否能组成三角形,大家第一时间想到的就是两边之和大于第三边 但是运用这个方法,我们需要判断三次,有一个更简单的方法,只需要判断一次 因为 C 已经是三边之中最大的了ÿ…...
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_cycle_modules
声明在 src/core/ngx_module.h ngx_int_t ngx_cycle_modules(ngx_cycle_t *cycle);实现在 src/core/ngx_module.c ngx_int_t ngx_cycle_modules(ngx_cycle_t *cycle) {/** create a list of modules to be used for this cycle,* copy static modules to it*/cycle->modul…...
大彩串口屏开发 —— MODBUS通信
目 录 Modbus通信方式 1 使用变量与协议设置方式 2 使用LUA脚本方式 3 两者结合 Modbus通信 大彩串口屏可以采用三种方式实现与其它设备进行modbus通信和逻辑处理。 方式 1 使用变量与协议设置 步骤1 在协议设置里进行设置,包括开启modbus协议,屏做为主…...
React-异步队列执行方法useSyncQueue
1. 完整代码 import React, { useEffect, useRef } from react; import { useDebounceFn } from "ahooks"; // 队列任务类型 interface QueueTask {id: number | string;execute: () > PromiseLike<any>; } // 异步队列执行方法 function useSyncQueue(par…...
【STM32】江科大STM32学习笔记汇总(已完结)
00. 目录 文章目录 00. 目录01. STM32学习笔记汇总02. 相关资料下载03. 打赏04. 附录 01. STM32学习笔记汇总 【STM32】STM32学习笔记-课程简介(01) 【STM32】STM32学习笔记-STM32简介(02) 【STM32】STM32学习笔记-软件安装(03) 【STM32】STM32学习笔记-新建工程(04) 【ST…...
【Python编程】高性能Python Web服务部署架构解析
一、FastAPI 与 Uvicorn/Gunicorn 的协同 1. 开发环境:Uvicorn 直接驱动 作用:Uvicorn 作为 ASGI 服务器,原生支持 FastAPI 的异步特性,提供热重载(--reload)和高效异步请求处理。 启动命令: u…...
OSPF的各种LSA类型,多区域及特殊区域
一、OSPF的LSA类型 OSPF(开放最短路径优先)协议使用多种LSA(链路状态通告)类型来交换网络拓扑信息。以下是主要LSA类型的详细分类及其作用: 1. Type 1 LSA(路由器LSA) 生成者:每个…...
CentOS 9 系统安装 Docker
CentOS 9 系统安装 Docker 容器化技术如 Docker 已成为提升应用部署效率和管理便捷性的关键利器。你是否曾在使用 Docker 时遭遇安装繁琐、配置复杂的困扰?或者对如何在 CentOS 9 系统上标准化安装 Docker 充满好奇?今天,就让我们一同深入探索…...
pyqt联合designer的运用和设置
PyQt Designer 简介 PyQt Designer 是一个用于创建和设计 PyQt 应用程序用户界面的可视化工具。它允许用户通过拖放方式添加和排列各种控件,如按钮、文本框、滑块等,并设置它们的属性和样式,从而快速构建出美观且功能完整的 UI 界面。 Windows版本:【免费】安装包别管啊啊…...
Linux(Centos 7.6)命令详解:zip
1.命令作用 打包和压缩(存档)文件(package and compress (archive) files);该程序用于打包一组文件进行分发;存档文件;通过临时压缩未使用的文件或目录来节省磁盘空间;且压缩文件可以在Linux、Windows 和 macOS中轻松提取。 2.命…...
vulnhub靶场之【digitalworld.local系列】的snakeoil靶机
前言 靶机:digitalworld.local-snakeoil,IP地址为192.168.10.11 攻击:kali,IP地址为192.168.10.6 kali采用VMware虚拟机,靶机选择使用VMware打开文件,都选择桥接网络 这里官方给的有两种方式࿰…...
FPGA时序约束的几种方法
一,时钟约束 时钟约束是最基本的一个约束,因为FPGA工具是不知道你要跑多高的频率的,你必要要告诉工具你要跑的时钟频率。时钟约束也就是经常看到的Fmax,因为Fmax是针对“最差劲路径”,也就是说,如果该“最差劲路径”得到好成绩,那些不是最差劲的路径的成绩当然比…...
ClusterIP、Headless Service 和 NodePort 的比较
1. ClusterIP 1.1 定义 ClusterIP 是 Kubernetes 默认的 Service 类型,它会为 Service 分配一个虚拟的 IP 地址(ClusterIP),这个 IP 是集群内部的虚拟地址,仅在集群内部有效。 1.2 工作原理 虚拟 IP:Clu…...
Ubuntu切换lowlatency内核
文章目录 一. 前言二. 开发环境三. 具体操作 一. 前言 低延迟内核(Lowlatency Kernel) 旨在为需要低延迟响应的应用程序设计的内核版本。Linux-lowlatency特别适合音频处理、实时计算、游戏和其他需要及时响应的实时任务。其主要特点是优化了中断处理、调…...
介绍一下Qt中的事件过滤
在 Qt 中,事件过滤(Event Filter)是一种强大的机制,它允许一个对象拦截并处理另一个对象接收到的事件。通过事件过滤,可以在事件到达目标对象之前对其进行监控和修改,这在很多场景下都非常有用,…...
C++修炼之路:初识C++
Hello大家好!很高兴我们又见面啦!给生活添点passion,开始今天的编程之路! 我的博客:<但凡. 我的专栏:《编程之路》、《数据结构与算法之美》、《题海拾贝》 欢迎点赞,关注! 引言 …...
微信小程序+SpringBoot的单词学习小程序平台(程序+论文+讲解+安装+修改+售后)
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,我会一一回复,希望帮助更多的人。 系统背景 (一)社会需求背景 在全球化的大背景下,英语作为国际…...
快乐数 力扣202
一、题目 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1&…...
VBA 数据库同一表的当前行与其他行的主键重复判断实现方案1
目的,判断是否主键重复,不重复则登录新数据,重复则不登录。 定义类型: DataRecord tableName 表名 rowNumber 行号 columnName 列名 data 数据 想要实现的代码逻辑如下: 模拟数据库的登录过程。假设…...
Java基础面试题全集
1. Java语言基础 1.1 Java是什么? • Java是一种广泛使用的编程语言,最初由Sun Microsystems(现为Oracle公司的一部分)于1995年发布。它是一种面向对象的、基于类的、通用型的编程语言,旨在让应用程序“编写一次&…...
3.激活函数:神经网络中的非线性驱动器——大模型开发深度学习理论基础
激活函数在神经网络中扮演着至关重要的角色,它为模型引入非线性因素,使得网络能够拟合复杂的数据分布,从而实现高效的特征提取与预测。本文将从实际开发角度出发,介绍激活函数的基本概念、常见激活函数(如 ReLU、GELU、…...
VUE的第二天
1. 指令修饰符 1.1什么是指令修饰符? 所谓指令修饰符就是通过“.”指明一些指令后缀 不同的后缀封装了不同的处理操作 —> 简化代码 1.2按键修饰符 keyup.enter —>当点击enter键的时候才触发 代码演示: <div id"app"><…...
Element Plus中的树组件的具体用法(持续更新!)
const defaultProps {//子树为节点对象的childrenchildren: children,//节点标签为节点对象的name属性label: name, } 属性 以下是树组件中的常用属性以及作用: data:展示的数据(数据源) show-checkbox:节点是否可…...
尚硅谷爬虫note14
一、scrapy scrapy:为爬取网站数据是,提取结构性数据而编写的应用框架 1. 安装 pip install scrapy 或者,国内源安装 pip install scrapy -i https://pypi.douban.com/simple 2. 报错 报错1)building ‘twisted.te…...
/***************************所有笔记汇总目录***************************/
文章分类目录 STM32CubeMX 01、STM32CubeMX——定时器(普通模式和PWM模式) 02、STM32CubeMX——串口(HAL库) 03、STM32CubeMX——(uart_IAP串口)简单示例 04、STM32CubeMX——ADC采集单通道,多通道,内部…...
Spring Framework中的IoC容器
控制反转(Inversion of Control, IoC)与面向切面编程(Aspect Oriented Programming, AOP)是Spring Framework中最重要的两个概念,本章会着重介绍前者。 2.1.1什么是IoC容器 使用XML来配置类实例 定义一个Java Bean类 在resources文件夹中定义一个beans.xml文件&a…...
永洪科技深度分析实战,零售企业的销量预测
随着人工智能技术的不断发展,智能预测已经成为各个领域的重要应用之一。现在,智能预测技术已经广泛应用于金融、零售、医疗、能源等领域,为企业和个人提供决策支持。 智能预测技术通过分析大量的数据,利用机器学习和深度学习算法…...
2.数据结构-栈和队列
数据结构-栈和队列 2.1栈2.1.1栈的表示和实现2.1.2栈的应用举例数制转换括号匹配检验迷宫给求解表达式求值 2.1栈 栈是限定仅在表尾进行插入或删除操作的线性表,因此,对栈来说,表尾端有其特殊含义,称为栈顶(top&#x…...
C++ MySQL 常用接口(基于 MySQL Connector/C++)
C MySQL 常用接口(基于 MySQL Connector/C) 1. 数据库连接 接口: sql::mysql::MySQL_Driver *driver; sql::Connection *con;作用: 用于创建 MySQL 连接对象。 示例: driver sql::mysql::get_mysql_driver_insta…...
android studio开发文档
android基本样式 1.文本 2.设置文本大小 3.字体颜色 背景 资源文件 xml’引用资源文件 4.视图宽高 5.间距 6.对齐方式 常用布局 1.linearLayout线性布局 2.相对布局 RelativeLayout 3.网格布局GridLayout 4.scrollview滚动视图 Button 点击事件与长按事件 长按 按钮禁用与…...
