Leetcode刷题详解——有效三角形的个数

1.题目链接:有效三角形的个数

2.题目描述:

给定一个包含非负整数的数组 nums ,返回其中可以组成三角形三条边的三元组个数。

示例 1:

输入: nums = [2,2,3,4]
输出: 3
解释:有效的组合是: 
2,3,4 (使用第一个 2)
2,3,4 (使用第二个 2)
2,2,3

示例 2:

输入: nums = [4,2,3,4]
输出: 4

提示:

  • 1 <= nums.length <= 1000
  • 0 <= nums[i] <= 1000

3.算法代码:

解法1:暴力枚举(会超时)

三层for循环枚举出所有的三元组,并且判断是否能构成三⻆形,然后count累加

class Solution {
public:int triangleNumber(vector<int>& nums) {int i,j,k;int count=0;for(i=0;i<nums.size();i++){for(j=i+1;j<nums.size();j++){for(k=j+1;k<nums.size();k++){if(nums[i]+nums[j]>nums[k]){count++;}}}}return count;}
};

解法2:排序+双指针

  1. 先将数组排序

  2. 固定最大的数

  3. 在最大数的左区间内,使用双指针算法快速统计出符合要求的三元组的个数

    • 如果 nums[left] + nums[right] > nums[i]

      • 说明[left, right - 1]区间上的所有元素均可以与 nums[right] 构成⽐nums[i]⼤的⼆元组
      • 满⾜条件的有right - left 种,此时 right 位置的元素的所有情况相当于全部考虑完毕, right-- ,进⼊下⼀轮判断
    • 如果 nums[left] + nums[right] <= nums[i]

      • 说明 left 位置的元素是不可能与 [left + 1, right] 位置上的元素构成满⾜条件的⼆元组,
      • left 位置的元素可以舍去 left++ 进⼊下轮循环
        请添加图片描述
class Solution {
public:int triangleNumber(vector<int>& nums) {//排序sort(nums.begin(),nums.end());//双指针int ret=0,n=nums.size();for(int i=n-1;i>=2;i--){int left=0,right=i-1;while(left<right){if(nums[left]+nums[right]>nums[i]){ret+=right-left;right--;}else{left++;}}}return ret;}};

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

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

相关文章

kafka 相关概念

1 kafka 生产者 kafka 用push的方式把消息推送到topic 每个topic下可以有多个分区&#xff0c; 可以用hash 也可以用轮询的方式指定分区 每个分区内部是可以保证顺序的&#xff0c;但是整体无法保证顺序&#xff0c;除非设置成一个topic只有一个分区。 kafka这种多分区的设置 带…

在vs code中创建一个名为 “django_env“ 的虚拟环境报错?!以下方法可以解决

# vs code 终端窗口中运行&#xff1a; mkvirtualenv django_env # 拓展&#xff1a; mkvirtualenv django_env 是一个命令&#xff0c;用于创建一个名为 "django_env" 的虚拟环境。虚拟环境是一种用于隔离不同Python项目所需依赖的工具。通过创建虚拟环境&#x…

AC/DC电源模块工作效率的特点

BOSHIDA AC/DC电源模块工作效率的特点 AC/DC电源模块是一种用来将交流电转换为直流电的设备&#xff0c;在各种电子设备中应用广泛。其中&#xff0c;工作效率是评价AC/DC电源模块性能的关键指标之一。下面将从工作效率的特点方面进行阐述&#xff0c;以帮助读者更好地理解AC/…

小程序开发平台源码系统+ 带前后端完整搭建教程

大家好&#xff0c;给大家分享一个小程序开发平台源码系统。这款小程序开发平台中有很多功能&#xff0c;今天主要来给大家介绍一下洗车行业小程序制作的功能。以下是部分核心代码图&#xff1a; 系统特色功能&#xff1a; LBS定位&#xff1a;小程序能够自动显示附近的共享洗…

mysql面试题50:500台数据库,如何在最快时间之内重启

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:500台db,如何在最快时间之内重启呢? 如果需要在最快时间内重启500台数据库,可以考虑采用并行化和自动化的方法来提高效率。比如: 编写自动化脚…

Window 窗口函数 (Spark Sql)

在 Spark SQL 中&#xff0c;Window 函数是一种用于在查询结果集中执行聚合、排序和分析操作的强大工具。它允许你在查询中创建一个窗口&#xff0c;然后对窗口内的数据进行聚合计算。 import org.apache.spark.sql.expressions.Window import org.apache.spark.sql.functions…

Python+高光谱数据预处理-机器学习-深度学习-图像分类-参数回归

涵盖高光谱遥感数据处理的基础、python开发基础、机器学习和应用实践。重点解释高光谱数据处理所涉及的基本概念和理论&#xff0c;旨在帮助学员深入理解科学原理。结合Python编程工具&#xff0c;专注于解决高光谱数据读取、数据预处理、高光谱数据机器学习等技术难题&#xf…

FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII实现 UDP 网络视频传输,提供工程和QT上位机源码加技术支持

目录 1、前言版本更新说明免责声明 2、我这里已有的以太网方案3、设计思路框架视频源选择OV5640摄像头配置及采集动态彩条UDP协议栈UDP视频数据组包UDP协议栈数据发送UDP协议栈数据缓冲IP地址、端口号的修改Tri Mode Ethernet MAC1G/2.5G Ethernet PCS/PMA or SGMIIQT上位机和源…

LangChain结合milvus向量数据库以及GPT3.5结合做知识库问答之一 --->milvus的docker compose安装

https://github.com/milvus-io/milvus/releaseshttps://github.com/milvus-io/milvus/releases 以下步骤均在Linux环境中进行&#xff1a; 将milvus-standalone-docker-compose.yml下载到本地。 1、新建一个目录milvus 2、将milvus-standalone-docker-compose.yml放到milvu…

【2】c++11新特性(稳定性和兼容性)—>超长整型 long long

c11标准要求long long整型可以在不同的平台上有不同的长度&#xff0c;但是至少64位&#xff0c;long long整型有两种&#xff1a; 有符号long long&#xff1a;–对应类型的数值可以使用LL或者ll后缀 long long num1 123456789LL; long long num2 123456789ll;无符号unsign…

蓝桥杯 常用STL (C++) 未完待续

动态数组 有些时候想开一个数组&#xff0c;但是却不知道应该开多大长度的数组合适&#xff0c;因为我们需要用到的数组可能会根据情况变动。 这时候我们就需要用到动态数组。所谓动态数组&#xff0c;也就是不定长数组&#xff0c;数组的长度是可以根据我们的需要动态改变的。…

innovus:antenna设置

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 innovus和ICC2还不一样&#xff0c;ICC2需要读antenna rule&#xff0c;innovus只看antenna lef&#xff0c;所以要检查一下lef里antenna信息全不全。 然后设置如下option: s…

如何优雅的实现接口统一调用

耦合问题 有些时候我们在进行接口调用的时候&#xff0c;比如说一个push推送接口&#xff0c;有可能会涉及到不同渠道的推送&#xff0c;以我目前业务场景为例&#xff0c;我做结算后端服务的&#xff0c;会与金蝶财务系统进行交互&#xff0c;那么我结算后端会涉及到多个结算…

华为云云耀云服务器L实例评测|windows系统3389防爆破之安全加固教程

为什么要选择华为云云耀云服务器L实例&#xff1a; 华为云在全国范围内建立了多个数据中心&#xff0c;这些数据中心之间相互冗余&#xff0c;以确保高可靠性和可用性&#xff0c;用户可以选择最适合的区域来部署应用程序&#xff0c;以实现更好的性能和延迟。 相对于传统的物…

获取时间Calendar类(LocalDateTime、LocalDate、LocalTime)

1.Calendar 是一个抽象类&#xff0c;并且构造器是private 2.我们只能通过getInstance()来获取实例 3.里面包含了大量的字段和方法提供给程序员 4. Calendar 没有提供对应的格式化的类&#xff0c;因此需要程序员自己组合来输出(灵活) 5.如果我们想要使用24小时制 Calendar.Hou…

如何快速集成讯飞星火 2.0 API ?

大家好&#xff0c;我是二哥呀。 之前带大家体验了两波科大讯飞的星火认知大模型&#xff0c;真没想到&#xff0c;反馈远超我的预期&#xff0c;大家普遍都说好&#xff0c;不仅注册方便&#xff0c;工作和学习的效率也得到了极大的提升。 今天继续给大家带来重磅体验&#…

4.2 网际协议IP

思维导图&#xff1a; 前言&#xff1a; **笔记 4.2 - 网际协议IP** 1. **定义与重要性**&#xff1a; - 网际协议IP是TCP/IP体系中的核心协议之一。 - 它是互联网的关键标准协议。 2. **发展背景**&#xff1a; - 又被称为Kahn-Cerf协议。 - 由Robert Kahn和…

记一次关于应用程序无法连接postgresql数据的问题排查

1. 完整的错误信息 could not connect to server: No such file or directory is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"? 2.排查过程 2.1.首先&#xff0c;我们先确保postgresql在运…

排序算法-基数排序法(RadixSort)

排序算法-基数排序法&#xff08;RadixSort&#xff09; 1、说明 基数排序法与我们之前讨论的排序法不太一样&#xff0c;并不需要进行元素之间的比较操作&#xff0c;而是属于一种分配模式排序方式。 基数排序法比较的方向可分为最高位优先&#xff08;Most Significant Di…