双指针算法: 有效三角形的个数

news2025/4/24 13:20:47

在这里插入图片描述

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨
🐻推荐专栏1: 🍔🍟🌯C语言初阶
🐻推荐专栏2: 🍔🍟🌯C语言进阶
🔑个人信条: 🌵知行合一

前言

声明:题目来源于: 力扣

目录

  • 前言
  • 一、有效三角形个数
    • (1) 题目描述
    • 示例
    • (2)解题思路
    • (3)代码展示:

一、有效三角形个数

题目链接:传送门

(1) 题目描述

给定一个包含非负整数的数组 nums ,返回其中可以组成三角形三条边的三元组个数。

示例

示例 1:

输入: nums = [2,2,3,4]
输出: 3

解释:

有效的组合是:
2,3,4 (使用第一个 2)
2,3,4 (使用第二个 2)
2,2,3

示例 2:

输入: nums = [4,2,3,4]
输出: 4

(2)解题思路

如果我们能找到三条边中,较短的两条边之和大于第三边(最长的边),则这是那边就可以构成一个三角形。

  1. 为了保证找到两个较小边与最长边的关系,我们需要将数据先排序。
    c从倒数第一个位置开始,bc的前一个位置,a为最开始的位置。
    在这里插入图片描述

  2. 先固定c
    a往前移动(相当于再固定b),知道a+b>c时停止
    在这里插入图片描述
    也就表示713之间,所有的数与15搭配,都符合要求,个数为b-a

  3. b向前(左)移动,继续步骤2
    在这里插入图片描述

  4. a>b,表明c为最后一个位置时,所有可能已经全部计算了,此时将c向前(左)移动一步,重复步骤2.

(3)代码展示:

class Solution {
public:
    int triangleNumber(vector<int>& nums) {
        int a = 0, b = nums.size() - 2, c = nums.size() - 1;
        sort(nums.begin(), nums.end());
        int count = 0;
        while (c >= 2) {

            while (a < b) {
                //先固定c,在前面的序列中找到两个边之和大于c
                if (nums[a] + nums[b] <= nums[c]) {
                    a++;
                }
                else {
                    //此时代表a到b之间都是符合条件的(因为升序)
                    count += (b - a);
                    b--;
                }   
            }
            //c开始往前移动一步,下次循环依旧相当于固定
            c--;
            //更新a和b
            a = 0;
            b = c - 1;
           
        }
        return count;
    }
};

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

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

相关文章

即将推出的 OpenWrt One/AP-24.XY:OpenWrt 和 Banana Pi 合作路由器板

OpenWrt开发人员正在与Banana Pi合作开发OpenWrt One/AP-24.XY路由器板。OpenWrt 是一个轻量级嵌入式 Linux 操作系统&#xff0c;支持近 1,800 个路由器和其他设备。然而&#xff0c;这将是第一块由 OpenWrt 直接开发的路由器板。 该主板将基于 MediaTek MT7981B (Filogic 82…

【教学类-43-19】20240113 数独(一) 3-5-6-7-8-10宫格 无空行A4模板

作品展示&#xff1a; 3宫格 5宫格 6宫格 7宫格 8宫格 10宫格&#xff0c;题目连在一起 背景需求&#xff1a; 制作十宫格数独模板&#xff0c;为了凑满20行&#xff0c;删除了每个数独题之间的行列分割线 【教学类-43-18】A4最终版 20240111 数独11.0 十宫格X*YZ套(n10)&am…

构建中国人自己的私人GPT-有道GPT

创作不易&#xff0c;请大家多鼓励支持。 在现实生活中&#xff0c;很多人的资料是不愿意公布在互联网上的&#xff0c;但是我们又要使用人工智能的能力帮我们处理文件、做决策、执行命令那怎么办呢&#xff1f;于是我们构建自己或公司的私人GPT变得非常重要。 先看效果 一、…

[Windows] Win10 常用快捷键

文章目录 &#x1f680; [Windows] Win10 常用快捷键&#x1f310; Windows 操作系统&#x1f525; Windows 10 &#x1f310; Windows 10 快捷键概览&#x1f525; 基本快捷键&#x1f525; 窗口快捷键&#x1f525; 功能快捷键 &#x1f4dd; 小结 &#x1f680; [Windows] W…

网站后台拿Webshell

通过注入或者其他途径&#xff0c;获取网站管理员账号和密码后&#xff0c;找到后台登录地址&#xff0c;登录后&#xff0c;寻找后台漏洞上传网页后门&#xff0c;获取网站的webshell webshell的作用是方便攻击者&#xff0c;webshel是拥有fso权限&#xff0c;根据fso权限的不…

Android Studio 虚拟机 Unknown Error 解决

前言 尝试了网上很多解决方式&#xff0c;但很遗憾&#xff0c;都没效果&#xff1b; 于是我就想啊&#x1f914;&#xff0c;虚拟机属于SDK的一部分&#xff0c;那有没有一种可能&#xff0c;是SDK出了问题&#xff1b; 于是我就换了新的SDK&#xff0c;结果 ---- 完美解决…

高德地图Web服务使用方法——电子围栏

1 高德地图Web服务 1.1 添加Key 注册高德地图&#xff0c;进入控制台&#xff0c;创建新应用&#xff0c;添加Key&#xff0c;选择Web服务&#xff0c;不添加域名白名单&#xff0c;勾选同意政策。 刷新界面&#xff0c;记住获取到的Key。 1.2 下载安装Postman https://www…

AWS-SAA-C03认证——之基础知识扫盲

文章目录 前言一、Amazon ECS二、 Amazon EKS三、Amazon EC2四、Elastic Beanstalk五、AWS Fargate六、 AWS Lambda &#xff08;serverless&#xff09;七、Amazon EBS7.1 EBS生命周期 八、Amazon Elastic File System (EFS) -共享文件系统九、什么是 Amazon S3&#xff1f;9.…

2024PMP考试新考纲-【过程领域】近期典型真题和很详细解析(5)

今天华研荟继续为您分享【过程Process领域】的新考纲下的真题&#xff0c;进一步帮助大家体会和理解新考纲下PMP的考试特点和如何应用知识来解题&#xff0c;并且举一反三&#xff0c;在两个多月的时间内&#xff0c;一次性、高等级通过2024年PMP考试。 2024年PMP考试新考纲-【…

WebService

Webservice 是一种传统的soa技术架构, 它不依赖于任何的编程语言,也不依赖于任何的技术平台, 可以直接基于http协议实现网络应用间的数据交互 Webservice 服务端是以接口远程接口为主的, 在java实现的webservice技术里面主要依靠的是CXF开发框架,而这个CXF框架可以直接将接口发…

《向量数据库指南》让「引用」为 RAG 机器人回答增加可信度

在之前的文章中&#xff0c;我们已经介绍了如何用 Milvus 向量数据库以及 LlamaIndex 搭建基础的聊天机器人《Chat Towards Data Science &#xff5c;如何用个人数据知识库构建 RAG 聊天机器人&#xff1f;》《书接上回&#xff0c;如何用 LlamaIndex 搭建聊天机器人&#xff…

计算机图形学作业:三维线段的图形变换

1. 将三维空间某线段 P1P2进行如下的操作&#xff0c;请按要求回答问题&#xff1a; &#xff08;1&#xff09; 沿 X 轴、Y 轴和 Z 轴分别平移 dx、dy 和 dz 的长度&#xff0c;给出相应的变换矩阵。 变换矩阵为&#xff1a; T100001000010dxdydz1 &#xff08;2&#xff09…

Scanner接收用户键盘输入数据(Java)

1.导包&#xff1a;import java.util.Scanner; 一般情况不需要自己导包&#xff0c;idea工具会自动帮助我们导包 2.代码&#xff1a; 得到键盘扫描器对象&#xff1a; Scanner sc new Scanner(System.in); 接收用户输入数据&#xff1a; int sth sc.nextInt(); String…

算法每日一题: 删除排序列表中的重复元素 | 链表的删除

大家好&#xff0c;我是星恒 今天给大家带来的是一道简单的链表删除题&#xff0c;题目很简单&#xff0c;不过可以帮助我们很好的复习链表的删除&#xff0c;尤其适合基础薄弱的友友们学习 ~ 题目&#xff1a;leetcode 83 给定一个已排序的链表的头 head &#xff0c; 删除所有…

【教学类-43-20】20240113 数独(二)4宫格、9宫格 无空行A4模板

作品展示&#xff1a; 4宫格 9宫格 题目连在一起 背景需求&#xff1a; 制作十宫格数独模板&#xff0c;为了凑满20行&#xff0c;删除了每个数独题之间的行列分割线 【教学类-43-18】A4最终版 20240111 数独11.0 十宫格X*YZ套(n10)&#xff0c;套用没有分割行列的A4横版模板…

C语言辨析——深入理解字符常量与表达式

1. 问题 今天看到一个题目&#xff0c;截图如下。 从答题情况来看&#xff0c;本题的答案是B&#xff0c;那么就意味着A、C、D是错的。但我认为这4个选项都是对的。当然&#xff0c;如果要从4个选项中挑选一个的话&#xff0c;那还是选择B妥当一些。 2. 分析 字符常量的定义…

SpringCloud Aliba-Nacos-从入门到学废【1】

&#x1f95a;今日鸡汤&#x1f95a; 当你最倒霉地时候一定要扛住。 因为&#xff0c;那正是你运气该上升的时候。 ——《一人之下》 目录 &#x1f9c8;1.Nacos介绍 &#x1f9c2;2.Nacos服务提供者注册 &#x1f953;3.Nacos服务消费者 &#x1f32d;4.Nacos作为配置中心…

学习使用Rainyun搭建网站

我们选择了白嫖雨云的二级域名 浏览器输入https://www.rainyun.com/z22_ 创建账号然后选择一个你喜欢的子域名我建议后缀选择ates.top的 选择自定义地址&#xff0c;类型选择cname 现在要选择记录值了&#xff0c;有a&#xff0c;aa&#xff0c;txt等 根据实际情况填写。就可以…

最新 Vmware (17 )下载安装教程

文章目录 Vmware安装Vmware官网Vmware官网选择对应的平台 win或者 linux安装包下载完成后 双击开始安装秘钥vmware workstation pro17密钥分享: Vmware安装 Vmware官网 中文网: https://www.vmware.com/cn.html 英文网: https://www.vmware.com/Vmware官网 选择对应的平台 wi…

Aigtek超声功率放大器的选型技巧及参数指标有哪些

超声功率放大器是一种广泛应用于声学测量、医疗成像、声纳等领域的装置&#xff0c;其作用是将输入信号的功率放大到需要的水平。在选型超声功率放大器时&#xff0c;需要考虑一些关键的技巧和参数指标&#xff0c;以确保选择合适的设备来满足特定的需求。 首先&#xff0c;需要…