leetcode 611. 有效三角形的个数(优质解法)

news2024/11/27 3:37:14

代码:

class Solution {
    public int triangleNumber(int[] nums) {
        Arrays.sort(nums);
        int length=nums.length;
        int n=0; //三元组的个数
        //c 代表三角形最长的那条边
        for (int c=length-1;c>=2;c--){
            int left=0;
            int right=c-1;
            while (left<right){
                if(nums[left]+nums[right]>nums[c]){
                    n+=right-left;
                    right--;
                }
                else {
                    left++;
                }
            }
        }
        return n;
    }
}

题解:

        首先我们要知道如何判断三条边是否可以组成三角形,假设我们有三条边 a,b,c,当 a+b>c && a+c>b && b+c>a 时,a,b,c 三条边就可以组成三角形,但很明显这样判断条件过多,其实我们还有一种判断方法:

        当 a,b 为三条边中较小的两条边时,只要满足 a+b > c,就代表a,b,c 三条边可以组成三角形

        我们在数组中获取参数时,如何知道获取的边是较小的两条边还是较大的一条边呢?可以先将数组进行排序,就可以将右边的数看作较大的一条边,在该数左边的区间找较小的两条边,来判断是否可以组成三角形

        我们以数组 1,4,4,3,2 为例

        经过排序以后数组变为 1,2,3,4,4

        我们就以指针 c(nums.length - 1) 的数据作为构成三角形较大的一条边,现在我们要在该下标左边的区间选择两条边来组成三角形,让 L 指针指向 0 下标,R 指针指向 c-1 下标,两个指针代表此时选中的 a ,b 边,其中 1+4=5>4 代表是一组合格的数据,可以组成三角形

        我们可以思考,L 指针指向的边是最小的边,最小的边加上此时 R 指针指向的边都可以大于第三边,那么 L 指针右边比它大的边加上此时 R 指针指向的边也一定是大于第三边的,所以我们可以得出以 R 指针指向的边作为 b 边,c 指针指向的边作为 c 边有 3组合格的数据,即 R - L 组 合格的数据

1        2        3        4        4

L                            R        c

0        1        2        3        4

        计算出此时 R 指针指向的边作为 b 边的所有情况以后,R 指针就可以向左移动

        此时 1+3=4 <= 4 所以指向的 1,3,4 的三条边不符合要求

1        2        3        4        4

L                  R                  c

0        1        2        3        4

        因为 a ,b边的和小了,但R 指针已经指向了目前最大的一条边,所以要让 L 指针向右移动,此时 2+3=5 > 4 所以有 R - L 组 合格的数据

1        2        3        4        4

          L        R                  c

0        1        2        3        4

        计算出此时 R 指针指向的边作为 b 边的所有情况以后,R 指针就可以向左移动,当 R 指针与 L 指针指向同一个位置时,就代表以 c 指针指向的边作为 c 边的全部情况已经收集完毕,现在我们就需要将 c 指针向左移动,选择新的一条边作为 c 边,继续进行上述的操作

1        2        3        4        4

          L                            c

          R

0        1        2        3        4

        当 c 指针移动到下标 2 的位置后,就代表所有的情况都收集完毕了

1        2        3        4        4

                    c

0        1        2        3        4

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1267194.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

生成式AI与预测式AI的主要区别与实际应用

近年来&#xff0c;预测式人工智能&#xff08;Predictive AI&#xff09;通过先进的推荐算法、风险评估模型、以及欺诈检测工具&#xff0c;一直在推高着该领域公司的投资回报率。然而&#xff0c;今年初突然杀出的生成式人工智能&#xff08;Generative AI&#xff09;突然成…

数据库其它调优策略

文章目录 1. 优化MySQL服务器2. 优化数据库结构2.1 差分表&#xff1a;冷热数据分离 3. 大表优化3.1 读/写分离3.2 垂直拆分3.3 水平拆分 1. 优化MySQL服务器 电商平台&#xff0c;双十一&#xff0c;CPU使用率达到99%&#xff0c;系统的计算资源已经耗尽&#xff0c;再也无法…

【springboot】Spring 官方抛弃了 Java 8!新idea如何创建java8项目

解决idea至少创建jdk17项目 问题idea现在只能创建最少jdk17&#xff0c;不能创建java8了吗?解决 问题 idea现在只能创建最少jdk17&#xff0c;不能创建java8了吗? 我本来以为是 IDEA 版本更新导致的 Bug&#xff0c;开始还没在意。 直到我今天自己初始化项目时才发现&…

基于Java SSM框架+Vue实现垃圾分类网站系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架Vue实现垃圾分类网站系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个垃圾分类网站 &#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述…

[cocos creator]EditBox,editing-return事件,清空输入框

需求&#xff1a; 监听EditBox&#xff0c;editing-return 回车事件&#xff0c;在输入框内点击回车后&#xff0c;发送内容&#xff0c;并清空输入框 问题&#xff1a; 设置node.getComponent(EditBox).string ; 没有效果 解决办法&#xff1a; //设置string 为空 this.v…

创纪云助力客服系统:通过API和无代码开发实现与电商平台的智能集成

无缝连接电商和客服系统&#xff1a;管家婆的无代码开发解决方案 在电子商务和客户服务日新月异的发展中&#xff0c;企业面临着如何提高效率和客户满意度的挑战。江苏创纪云网络科技有限公司&#xff08;INNOVATION ERA&#xff09;推出了一款无需API开发的解决方案&#xff…

(git)拉取代码时提示连接失败...SSL certificate problem: self signed certificate

(git)拉取代码时提示连接失败…SSL certificate problem: self signed certificate 解决思路&#xff1a;git 忽略https验证 方法 git config --global http.sslVerify false效果&#xff1a; 解决参考&#xff1a;https://blog.csdn.net/JuleRoch/article/details/10994172…

HWAsan机制

目录 概述 原理 使用 验证开启 对比asan 参考链接 概述 hwasan是Hardware Address Sanitizer的简称&#xff0c;它是clang llvm提供的一套内存错误检测系统&#xff0c;可以用来检测C/C代码常见的内存错误 Stack and heap buffer overflow/underflow Global buffer ove…

实在品牌墙又双叒叕扩容,数十家龙头品牌签约实在RPA

近日&#xff0c;“实在智能 华夏行”数智化赋能之旅火爆前行&#xff0c;为孩子王、视客眼镜、心海伽蓝、洁丽雅、诗裴丝、视贝、博纳泉、鑫荣懋、艾莱得、布诗等数十家优秀企业带来超自动化智能解决方案&#xff0c;帮助商家解决重复低效工作&#xff0c;降低运营成本&#x…

Shell脚本编程案例 – 批量创建特殊要求账户

Shell脚本编程案例 – 批量创建特殊要求账户 Shell Scripting Cases – Create a Bunch of accounts with special requests By JacksonML 本文简要介绍批量执行Shell脚本命令的基本思路&#xff0c;以检验shell脚本知识掌握情况。希望对读者有所帮助。 案例要求&#xff1a…

激光切割头组件中喷嘴的作用是什么

喷嘴是一个不可忽视的部件。尽管喷嘴并不起眼&#xff0c;却有着重要的作用&#xff1b;喷嘴一般是与激光切割头同轴的&#xff0c;且形状多样&#xff1a;圆柱形、锥形、缩放型等。 喷嘴的口径尺寸时不相同的&#xff0c;大口径的喷嘴对聚焦来的激光束没有很严苛的要求;而口径…

python开发之个微自动转发朋友圈

简要描述&#xff1a; 转发朋友圈&#xff0c;直接xml数据。(对谁不可见) 请求URL&#xff1a; http://域名地址/forwardSns 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/jsonAuthorization&#xff1a;login接口返回 参…

主流之选!Galaxybase荣获工信部赛宝信创解决方案全国三等奖

喜报&#xff01;“创邻图智能方案”再获工信部官方认可&#xff01; 11月23日&#xff0c;由工业和信息化部电子第五研究所和中国通信企业协会联合主办的“第二届中国赛宝信息技术应用创新优秀解决方案征集活动”结果正式公布&#xff0c;创邻科技Galaxybase智能风控解决方案…

TOPK问题的求解

在这片文章详解二叉树-CSDN博客中我们提到&#xff0c;如果要在非常多的数据(内存存不下)中找到最大或最小的前K个数&#xff0c;我们需要先构建一个K个数的小堆或大堆&#xff1b;再跟堆顶数据比较 要找最大的前K个数建小堆&#xff1b;要找最小的前K个数建大堆 1.构造数据 既…

ZooKeeper的分布式锁---客户端命令行测试(实操课程)

本系列是zookeeper相关的实操课程&#xff0c;课程测试环环相扣&#xff0c;请按照顺序阅读测试来学习zookeeper。阅读本文之前&#xff0c;请先阅读----​​​​​​zookeeper 单机伪集群搭建简单记录&#xff08;实操课程系列&#xff09;。 阅读本文之前&#xff0c;请先阅读…

Ajax的使用方法

1,什么是Ajax&#xff1f; Ajax&#xff08;异步Javascript和XML&#xff09;&#xff0c;是指一种创建交互式网页应用的网页开发技术。 2&#xff0c;Ajax的作用 Ajax可以使网页实现异步更新----即在不更新整个页面的情况下实现对某一部分进行更新。 简单来说Ajax就是用于连接…

不测试,不安全 —— 安全测试的重要性!

1、 什么是安全测试 安全测试是一种软件测试&#xff0c;可发现软件应用程序中的漏洞&#xff0c;威胁&#xff0c;风险并防止来自入侵者的恶意攻击。 安全测试的目的是确定软件系统的所有可能漏洞和弱点&#xff0c;这些漏洞和弱点可能导致信息&#xff0c;收入损失&#xff…

中兴小鲜50 ZTE 畅行50 刷机救砖演示机7543n root 虎贲 展锐 T760 解锁BL

系统信息 网络制式 支持中国移动、中国电信、中国联通、中国广电四大运营商5G频段&#xff1b;支持4G/3G/2G 系统平台 MyOS 13.0&#xff08;基于Android 13&#xff09; 硬件信息 处理器 展锐T760&#xff0c;高性能8核5G芯片 存储 6GB RAM128GB ROM 扩展 不支持 电池容…

centos7内核升级(k8s基础篇)

1.查看系统内核版本信息 uname -r 2.升级内核 2.1更新yum源仓库 yum -y update更新完成后&#xff0c;启用 ELRepo 仓库并安装ELRepo仓库的yum源 ELRepo 仓库是基于社区的用于企业级 Linux 仓库&#xff0c;提供对 RedHat Enterprise (RHEL) 和 其他基于 RHEL的 Linux 发行…

【算法萌新闯力扣】:环形链表及环形链表II

力扣题目&#xff1a;环形链表及环形链表II 开篇 今天是备战蓝桥杯的第26天和算法村开营第4天。挑选了链表的黄金关卡与大家分享。 题目一&#xff1a;环形链表 题目链接: 141.环形链表 题目描述 方法一、哈希表 判断是否有环&#xff0c;可以利用哈希表&#xff0c;遍历…