有效三角形的个数
给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。
输入: [2,2,3,4]
输出: 3
解释:
有效的组合是:
2,3,4 (使用第一个 2)
2,3,4 (使用第二个 2)
2,2,3
数组长度不超过1000。
数组里整数的范围为 [0, 1000]。
三条边要能构成三角形,必然满足两边之后大于第三边。也就是三条边长度分别是a,b,c,满足a+b>c的都可以组成三角形。这和前面的求小于K的两数之后的原理是一样的。
1 对数组进行排序,这个时候从右边选定c,也就是最长的一条边。
2 然后对c之前的数组求两数之和。大于c的则满足条件。
代码如下:
int triangleCount(int a[], int len) { int left, right, anchor; int count = 0; insert_sort(a, len); for (int i = len - 1; i >= 2; i--) { //left从左边开始,right从i之前的最右边开始 left = 0; right = i - 1; while (left < right) { if (a[left] + a[right] > a[i]) { //如果满足条件,则表示从left到right之间的数字和right相加都满足大于c的条件。因为数组是递增的 count += right-left; right--; } else { //不满足条件,则left+1 向前继续寻找 left += 1; } } } return count; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2017-10-16 python网络爬虫之requests库 二