双指针(5)——有效三角形个数

题目:

这道题我们首先可能会想到暴力解法,三个for循环然后进行check()。时间复杂度肯定是不允许的。

同时,验证可以组成三角形的条件是任意两边之和大于第三边,这就意味着我们每组要进行三次比较。但也有捷径——只需比较一次即可。但需要条件,让这三个数的组合按从小到大进行排列(a≤b≤c),然后我们只需验证a+b是否大于c即可。因此第一步,我们要把数组进行排序(sort)。

然后我们接下来的思路与双指针(4)的原理有点类似:

我们先计算arr[left]+arr[right](1+9=10,不构成),如果满足a+b≤c,那么left和right的中间任何一个数和left组合都不能满足三角形,所以此时我们就可以把所有数与left的组合都忽略(不用计算了)即,让left++,这是一次流程。反之如果大于c,那么此次流程中的所有数与right结合都满足要求,则有效三角形个数为right-left,然后让right--进行下一次流程,直到left与right相遇。

注意:以上整个流程都是在与10比较,当二者相遇为一个循环,循环结束后,我们要让二者与9(往前一个)比较。直到走到第三个为止。统计每次循环的有效数并求和。

int Solution(vector<int>& nums)
{sort(nums.begin(),nums.end());int ret=0, n=nums.size();for(int i=n-1;i>=2;i--){int left=0,right=i-1;while(left<right){if(nums[left]+nums[right]>nums[i]){ret+=right-left;right--;}else  left++;}}return ret;}

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

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

相关文章

书生实战营之沐曦专场

一&#xff1a;实验环境进入和启动实验容器(D.run平台) 1.1首先进入平台进行注册 D.run平台https://console.d.run/ 注册和登录环节就跳过了。 1.2 启动实验容器--详细步骤如下 1.2.1选择容器的名称、区域、镜像&#xff08;注意镜像必须选择Dlinfer&#xff09; 1.2.2可以选…

内置类型成员变量的初始化详解

在 C 中&#xff0c;内置类型&#xff08;如 int、float、double、char、指针等&#xff09;的初始化方式与类类型&#xff08;如 std::string、自定义类&#xff09;不同。由于内置类型没有构造函数&#xff0c;它们的初始化行为由编译器直接处理。以下是详细解析&#xff1a;…

对第三方软件开展安全测评,如何保障其安全使用?

对第三方软件开展安全测评&#xff0c;能够精准找出软件存在的各类安全隐患&#xff0c;进而为软件的安全使用给予保障。此次会从漏洞发现、风险评估、测试环境等多个方面进行具体说明。 漏洞发现情况 在测评过程中&#xff0c;我们借助专业技术与工具&#xff0c;对第三方软…

11.Spring Boot 3.1.5 中使用 SpringDoc OpenAPI(替代 Swagger)生成 API 文档

Spring Boot 3.1.5 中使用 SpringDoc OpenAPI&#xff08;替代 Swagger&#xff09;生成 API 文档 1. 项目结构 假设项目名为 springboot-openapi-demo&#xff0c;以下是项目的基本结构&#xff1a; springboot-openapi-demo/ ├── src/ │ ├── main/ │ │ ├─…

python入门(1)变量与输入输出

一、变量 使用规则 变量名值例子 a13变量名规则 变量名可以用大小写字母、数字、下划线。 数字、下划线不可开头 例子 name name1 1name name_first _first 二、输入输出 输出print print(*objects,sep"",end"\n") objects:多个要输出的值 sep:每个…

TS 安装

TS较JS优势 1 TS静态类型编程语言。编译时发现错误 2 类型系统 强化变量类型概念 3 支持新语法 4 类型推断机制 可以和React框架中的各种hook配合 5 任何地方都有代码提示 tsc 命令 将TS转为JS 1 tsc 文件.ts 生成 js文件 2 执行JS代码

Linux-常用监控工具

以下是对 Linux 系统中常用监控工具&#xff08;netstat、ss、dmesg&#xff09;的系统性介绍&#xff0c;涵盖其核心功能、典型用法及实际应用场景&#xff0c;帮助您分析系统状态和内核参数调整后的效果&#xff1a; 1. netstat -s&#xff1a;网络协议栈统计监控 功能 net…

Linux系统:详解文件描述符与重定向原理以及相关接口(open,read,write,dup2)

本节重点 从狭义与广义角度理解文件理解文件描述符掌握open,write,read系统调用理解重定向的概念与原理掌握重定向的指令操作stdout与stderr的比较为什么存在stderr&#xff1f; 一、理解“文件” 1.1 狭义角度 在狭义层面&#xff0c;Linux文件是磁盘或存储设备上连续或分…

美国市场变局:沃尔玛95%覆盖率的3个流量入口重构策略

过去几年&#xff0c;美国零售市场经历了极大的变化。电商发展迅猛&#xff0c;加上疫情影响&#xff0c;消费者购物习惯出现转向。而作为美国零售巨头&#xff0c;沃尔玛&#xff08;Walmart&#xff09;凭借高达95%的线下覆盖率&#xff0c;始终是品牌和卖家不可忽视的渠道。…

一文详解 Linux下的开源打印系统CUPS(Common UNIX Printing System)

文章目录 前言一、CUPS 简介二、CUPS 常用指令解析2.1 安装 CUPS2.2 启动/重启服务2.3 添加打印机&#xff08;核心操作&#xff09;2.4 设置默认打印机2.5 打印文件2.6 查看打印任务2.7 取消打印任务2.8 查看、移除已添加的打印机 三、调试与常见问题3.1 日志查看3.2 驱动问题…

React useCallback函数

应用场景&#xff1a;父组件向子组件传递函数类型的props时

python 桌面程序开发简述及示例

Python桌面程序开发简述及示例 Python凭借其简洁的语法和丰富的库支持,非常适合开发跨平台的桌面应用程序。本文将介绍Python桌面开发的主要方法,并提供实际代码示例。 一、Python桌面开发主要方法 1.1 Tkinter(标准库) Python内置的GUI库,适合开发简单桌面应用 1.2 …

数字智慧方案5875丨智慧交通枢纽综合解决方案(43页PPT)(文末有下载方式)

篇幅所限&#xff0c;本文只能提供部分资料内容&#xff0c;完整资料请看下面链接 https://download.csdn.net/download/2301_78256053/89575708 资料解读&#xff1a;智慧交通枢纽综合解决方案 详细资料请看本解读文章的最后内容。 随着城市化进程的加速和交通需求的不断增…

企业级分布式 MCP 方案

飞书原文档链接地址&#xff1a;https://ik3te1knhq.feishu.cn/wiki/D8kSwC9tFi61CMkRdd8cMxNTnpg 企业级分布式 MCP 方案 [!TIP] 背景&#xff1a;现阶段 MCP Client 和 MCP Server 是一对一的连接方式&#xff0c;若当前 MCP Server 挂掉了&#xff0c;那么 MCP Client 便不…

【AI提示词】奥卡姆剃刀思维模型专家

提示说明 一位专注于奥卡姆剃刀思维模型的专业人士&#xff0c;擅长将简洁性原则应用于复杂问题的分析与解决。 提示词 # Role: 奥卡姆剃刀思维模型专家## Profile - language: 中文 - description: 一位专注于奥卡姆剃刀思维模型的专业人士&#xff0c;擅长将简洁性原则应用…

2.1 行列式

引言 行列式是线性代数的核心工具&#xff0c;贯穿矩阵运算、特征值计算与微分方程求解。本文系统梳理2.1节核心考点&#xff0c;结合公式速查与典型例题&#xff0c;助你高效突破行列式难点&#xff01; 考点一&#xff1a;数值型行列式计算 1️⃣ 行列式的定义 (1) 定义方…

单词规律(简单)

思路和同构字符串那道题一样。、但是这道题要注意的地方就是&#xff0c;检查 pattern 和 s 的单词数量是否一致以及在进行字符串比较的时候应该用equals来进行比较&#xff0c;而不能用“&#xff01;”&#xff0c;“&#xff01;”比较的是对象引用而非内容。 class Soluti…

【C++】认识map和set

目录 前言&#xff1a; 一&#xff1a;认识map和set 二&#xff1a;map和set的使用 1.set的使用 2.map的使用 三&#xff1a;map的insert方法返回值 四&#xff1a;map的[ ]的使用 五&#xff1a;multiset和multimap 六&#xff1a;map和set的底层数据结构 七&#x…

Mybatis中的一级二级缓存扫盲

思维导图&#xff1a; MyBatis 提供了一级缓存和二级缓存机制&#xff0c;用于提高数据库查询的性能&#xff0c;减少对数据库的访问次数。&#xff08;本质上是减少IO次数&#xff09;。 一级缓存 1. 概念 一级缓存也称为会话缓存&#xff0c;它是基于 SqlSession 的缓存。在同…

uniapp 实现低功耗蓝牙连接并读写数据实战指南

在物联网应用场景中&#xff0c;低功耗蓝牙&#xff08;BLE&#xff09;凭借其低能耗、连接便捷的特点&#xff0c;成为设备间数据交互的重要方式。Uniapp 作为一款跨平台开发框架&#xff0c;提供了丰富的 API 支持&#xff0c;使得在多个端实现低功耗蓝牙功能变得轻松高效。本…