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

有效三角形的个数

题目链接:611. 有效三角形的个数 - 力扣(LeetCode)

思路:

这道题要根据数组中的元素来判断能组成三角形的个数,

三边a、b、c要满足a+b>c,a+c>b,b+c>a这三个条件才能构成三角形。

当c>a,c>b时,我们只需要判断一个条件a+b>c是否满足就可以了,满足就能构成一个三角形。

所有我们可以先对数组进行排序

我们先选定最大的数作为c,让left=0,right在c的位置-1,

如果arr[left]+arr[right] > c,那么left和right中间这些>=left指向的数的元素和righ指向的数相加一定也是>c的,因此这些数和arr[right]、c一定能构成三角形。

然后left应该向左移动,再去判断移动后的arr[left]+arr[right]和c的关系。

如果arr[left]+arr[right] < c,那就把left向右移动,然后再去判断。

直到left和right相遇,我们就把所有c作为做大的数的所有情况判断完了,再把c左移,然后重复上面的情况。

因为要构成一个三角形,数组中至少要有3个数,所有c的位置做多只能到数组下标为2的位置。

代码:

public int triangleNumber(int[] nums) {
        //排序
        Arrays.sort(nums);
        int result = 0;
        for(int i = nums.length - 1; i >= 2; i--) //固定最大数
        {
           int left = 0, right = i - 1;
           while(left < right){
            if(nums[left] + nums[right]>nums[i]){
                result += right - left;
                right--;
            }else{
                left++;
            }

           }
        }
        return result;
    }

相关文章:

  • Redis的基础,经典,高级问题解答篇
  • DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例6,TableView16_06 分页表格拖拽排序
  • 【洛谷题单】暴力枚举(上)
  • 淳厚的sql注入内功
  • [特殊字符] Hyperlane:Rust 高性能 Web 框架的终极选择 [特殊字符]
  • 新能源动力电池测试设备深度解析:充放电设备与电池模拟器的差异及技术趋势
  • C#从入门到精通(3)
  • 栈-有效的括号
  • 计算机网络八股
  • 第五周日志-重新学汇编(2)
  • dify+vue+java接入大模型流式输出
  • 面试计算机操作系统解析(一中)
  • MySQL 优化利器 SHOW PROFILE 的实现原理
  • IP组播 C++简单应用
  • RSTP快速生成树协议
  • 车架号查询车牌号接口如何用Java对接
  • LN9361 低噪声电荷泵 DC/DC 转换器
  • 人工智能基础知识笔记五:相关分析
  • Gralloc 接口全解析(Android 14+ 最新版本)
  • Leetcode 最长递增子序列的个数
  • sap.net怎么做网站/seo优化价格
  • 沈阳网站/seo平台
  • 那个网站百度收录好/整合营销传播的方法包括
  • 泰安最新通告今天/百度seo营销推广
  • 济南市高新技术官方网站开发区/广州seo推广优化
  • 做网站买阿里云的ecs服务器/下载官方正版百度