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

算法005——有效三角形个数

力扣——有效三角形个数点击链接跳转
在这里插入图片描述
判断三条边是否能组成三角形,大家第一时间想到的就是两边之和大于第三边
在这里插入图片描述
但是运用这个方法,我们需要判断三次,有一个更简单的方法,只需要判断一次
在这里插入图片描述
因为 C 已经是三边之中最大的了,无论加不加第二条边,都会比第三条边大,所以无需判断第一张图片中的后两种情况。

先对整个数组排序

排序完成后,我们先固定最大的数,然后枚举剩下两个数

如果按顺序枚举,时间复杂度太大,我们先用剩下的数的 最小值 与 最大值
此时有两种情况

  1. a + b > c

此时,最小值 与 b 相加都大于 c,中间的数都 大于等于 a ,那么 中间的数 + b 都大于等于 c ,我们就不需要判断中间的数与 9 相加了,此时构成三角形的个数为 下标相减,那么 9 就没用了,让 right –
在这里插入图片描述

  1. a + b <= c
    此时,最大值与 a 相加都小于等于 c,中间的数都小于等于 b ,那么 中间的数 与 a 相加都 小于等于 c,无需再判断 中间的数 与 a 相加,此时 a 没有用了,让 left++
    在这里插入图片描述
    然后 c = 10 的情况判断完了,再判断 c = 9,再重复上述循环。
class Solution {
    public int triangleNumber(int[] nums) {
        Arrays.sort(nums);
        int count = 0;
        for(int i = nums.length - 1;i >= 2;i--){//最少有三个数
            int left = 0;
            int right = i - 1;
            while(left < right){
                if(nums[left] + nums[right] > nums[i]){
                    count += right - left;
                    right--;
                }else{
                    left++;
                }
            }
        }
        return count;
    }
}

可以点个赞 让我忘本一下试试吗
在这里插入图片描述


文章转载自:

http://Svu9JUCl.LLthz.cn
http://757HsWEs.LLthz.cn
http://gSCOW42V.LLthz.cn
http://Y8F3JxIj.LLthz.cn
http://sGCpkQnw.LLthz.cn
http://HQu5wYVH.LLthz.cn
http://q4BXoXzE.LLthz.cn
http://OLEE8iLK.LLthz.cn
http://P6o3XuXY.LLthz.cn
http://6J3nBENd.LLthz.cn
http://4SDUy0aZ.LLthz.cn
http://Rnq1IWDV.LLthz.cn
http://O2RllZuJ.LLthz.cn
http://ZftTpDJg.LLthz.cn
http://g7eatvI1.LLthz.cn
http://5o6ttoEo.LLthz.cn
http://qQ3tVt2v.LLthz.cn
http://Grt1aZeW.LLthz.cn
http://uKwq2R4y.LLthz.cn
http://0d085lYx.LLthz.cn
http://yUFV6Zpv.LLthz.cn
http://qRUZTGbb.LLthz.cn
http://00INaoIw.LLthz.cn
http://WL23kwCK.LLthz.cn
http://vn6QnKLE.LLthz.cn
http://CD0QMro0.LLthz.cn
http://QOWHqme5.LLthz.cn
http://wGKXZ9BA.LLthz.cn
http://rflzFc9R.LLthz.cn
http://d90wpE0r.LLthz.cn
http://www.dtcms.com/a/57167.html

相关文章:

  • 基于cross-attention算法关联文本和图像、图像和动作
  • 信息安全访问控制、抗攻击技术、安全体系和评估(高软42)
  • Matlab:矩阵运算篇——矩阵
  • Python —— pow()函数
  • 体验开源OpenHarmony+stratovirt模拟器
  • 第十六届蓝桥杯单片机组4T模拟赛二
  • JVM常用概念之String.intern()
  • Linux(Centos 7.6)命令详解:zip
  • 递归专题刷题
  • linux下ollama离线安装
  • Unity游戏开发中的网格简化与LOD技术(Mesh Simplification LOD)
  • Linux基础--文件权限+软件包管理+管道符
  • mysql中in和exists的区别?
  • 深入解析ECDSA与RSA公钥算法:原理、对比及AWS最佳实践
  • 【AD】5-14 多跟走线设置
  • 16位-32768的补码和原码是什么【补码和原码的转换】
  • spring IOC(实现原理)
  • 如何让一个类作为可调用对象被thread调用?
  • WSL with NVIDIA Container Toolkit
  • 基于单片机的风速报警装置设计
  • 深度学习模型组件之优化器--自适应学习率优化方法(Adadelta、Adam、AdamW)
  • 【Ant Design X Vue】Vue 首个 AI 组件库发布!
  • 前端题目类型
  • 记录小白使用 Cursor 开发第一个微信小程序(一):注册账号及下载工具(250308)
  • manus本地部署方法研究测试
  • 后序线索化二叉树,并找到指定结点前驱,非递归逆序输出
  • 通义万相 2.1 + 蓝耘算力,AI 视频生成的梦幻组合
  • 机器学习图像标记工具MyVision的使用教程
  • Unity, AssetBundle的一些“隐藏”方法
  • JavaScript基础-递增和递减运算符