给定一个包含非负整数的数组 nums ,返回其中可以组成三角形三条边的三元组个数。
示例 1:
输入: nums = [2,2,3,4] 输出: 3 解释:有效的组合是: 2,3,4 (使用第一个 2) 2,3,4 (使用第二个 2) 2,2,3
2 解析对于正整数 a, b, ca,b,c,它们可以作为三角形的三条边,当且仅当:
{ a + b > c a + c > b b + c > a \begin{cases} a + b > c \\ a + c > b \\ b + c > a \end{cases} ⎩ ⎨ ⎧a+b>ca+c>bb+c>a
a + b > c a + c > b b + c > a a+b>c \\a+c>b \\b+c>a a+b>ca+c>bb+c>a 均成立。如果我们将三条边进行升序排序,使它们满足 a ≤ b ≤ c a ≤ b ≤ c a \leq b \leq c a≤b≤c a≤b≤ca≤b≤c,那么$a+ c > b 和 和 和b + c > a$ 使一定成立的,我们只需要保证 a + b > c。
因此,我们可以将数组nums 进行升序排序,随后使用二重循环枚举 a 和 b。设 a = nums[i], b = nums[j],为了防止重复统计答案,我们需要保证 i < j。 剩余的边 cc需要满足c
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?