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

LeetCode有效三角形的个数

有效三角形个数

  • 有效三角形的个数

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

本题首先需要发现一个规律,就是当你的三条边(a,b,c)长度按升序排列的时候,只需要验证a+b>c即可验证能否构成三角形,因为a+b>c则a+c>b,且b+c>a,那么这个时候可以暴力解法,直接先确定一条边开始选择另外两个边,时间复杂度O(n^3)。

本题巧妙的解法可以利用排序后的单调性使用双指针,初始first=0,third=nums.size()-1,second=third-1,固定third这条边,去找另外两条边,当nums[first]+nums[second]>nums[third]之后,则first和second之间的所有元素都可以满足条件,因为中间的元素一定都比nums[first]大,一定满足不等式,当nums[first]+nums[second]<nums[third]的时候,只需要将first++,直到nums[first]+nums[second]>nums[third],每次找到满足条件的first之后,second,result+=second-first,直到second<first,first不用变,因为当second--之后当前second所指向的值一定是比之前小或者相等的,那么如果first减小的情况下,则nums[first]减小,nums[second]减小,而一轮循环后first又是刚好满足nums[first]+nums[second]>nums[third]的最小值,那么就不可能满足条件。当second<first之后third--,first=0,second=third-1,进行最外层新一轮循环。
在这里插入图片描述

class Solution {
public:int triangleNumber(vector<int>& nums) {sort(nums.begin(), nums.end());int n=nums.size();int first=0;int third=n-1;int second=third-1;int result=0;if(n<3){return result;}while(third>=2){while(first<second){if(nums[first]+nums[second]>nums[third]){result+=second-first;second--;}else{first++;}}third--;first=0;second=third-1;}return result;}
};
http://www.dtcms.com/a/320572.html

相关文章:

  • 借助Rclone快速从阿里云OSS迁移到AWS S3
  • 基于UDP的代理协议的Tuic怎么样?
  • 破解 Django N+1 查询困境:使用 select_related 与 prefetch_related 实践指南
  • 五十六、【Linux系统nginx服务】nginx虚拟主机实现
  • [linux] Linux:一条指令更新DDNS
  • GPT-OSS重磅开源:当OpenAI重拾“开放”初心
  • 面试题:bable,plugin,loader,还有在打包过程中.vue/.react文件是如何转化为.js文件的
  • linux mysql 8.X主从复制
  • 聚焦2025世界机器人大会:全尺寸人形交互陪伴机器人GR-3有哪些亮点值得关注?
  • React 原生部落的生存现状:观察“Hooks 猎人“如何用useEffect设陷阱反被依赖项追杀
  • vscode EIDE 无法编译,提示 “文件名、目录名或卷标语法不正确;
  • 论文精读(二)| 开源软件漏洞感知技术综述
  • spring.cache.type=SIMPLE详解
  • 2025年国内iPaaS平台精选
  • Docker搭建Jenkins实现自动部署:快速高效的持续集成之道!
  • 汉明码:从原理到实现的深度解析
  • 【软考中级网络工程师】知识点之路由器配置全解析
  • 微信小程序miniprogram-ci 模块实现微信小程序的自动上传功能
  • 分布式膛压应变测量系统
  • CSS BFC
  • Linux初级阶段性练习
  • Chrome与Firefox浏览器安全运维配置命令大全:从攻防到优化的专业实践
  • 内网穿透原理与部署实战指南:从理论到企业级应用
  • React Hooks 完全指南:从概念到内置 Hooks 全解析
  • C++-->stl: list的使用
  • 为什么输入 URL 后会显示页面?HTTP 协议的 “幕后操作”
  • docker缓存目录转移设置和生效过程
  • 稿定科技:多云架构下的 AI 存储挑战与 JuiceFS 实践
  • 负氧离子监测站:守护清新空气的科技卫士
  • 从零掌握 Java AWT:原理、实战与性能优化