leetcode 611. Valid Triangle Number(有效三角数)

深入理解C++23的Deducing this特性(上):基础概念与语法详解 C++23标准中引入的"Deducing this"特性是一项重大革新,它不仅改变了我们编写成员函数的方式,还为模板元编程和设计模式实现带来了新的可能。 阅读详情

Given an array consists of non-negative integers, your task is to count the number of triplets chosen from the array that can make triangles if we take them as side lengths of a triangle.
Example 1:
Input: [2,2,3,4]
Output: 3
Explanation:
Valid combinations are:
2,3,4 (using the first 2)
2,3,4 (using the second 2)
2,2,3
Note:
The length of the given array won’t exceed 1000.
The integers in the given array are in the range of [0, 1000].

超过100只能用O(N2)复杂度
在数组中找出所有可以组成三角形的组合数

思路:
如果列举所有组合,来判断两边之和是否大于第三边,会出现TLE
所以只能用O(N2)复杂度的算法

可以这样看,先把数组降序或升序排序,比如说升序
把数组最右边也就是最长的边当作c,那么只需要判断c左边的部分中选出的两条边a,b的和是不是大于c
c左边的部分要选出a,b,a<b,那么可以看到如果a+b>c,那么a右边直到b之前的数+b都会>c,因为数组是升序的,a右边的都会大于a
举个例子[2,2,3,4]
c取4,b取c左边的3,a取第一个数2,a+b>c,所以a到b之间的所有边都可以和b,c组成三角形,即a可取第一个和第二个2

那么就转换成了双指针问题,a+b>c,那么它右边直到b之前的个数都是有效组合数,这时可以把b放小,即b所在的指针左移,计算在新的b的条件下有效的三角边个数
同理如果a+b<c, 就需要把a右移,让a更大一些

然后c从大到小遍历即可

注意每次c到一个新的位置,b都要置为c左边的数,a都要重新置0(最小的边)

    public int triangleNumber(int[] nums) {
        if(nums == null || nums.length < 3) {
            return 0;
        }
        
        int n = nums.length;
        int result = 0;
        
        Arrays.sort(nums);
        
        for(int c = n-1; c > 1; c--) {
            int b = c - 1;
            int a = 0;
            while(b > a) {
                if(nums[a] + nums[b] > nums[c]) {
                    result += (b - a);
                    b --;
                } else {
                    a ++;
                }
            }
        }
        
        return result;
    }
输入过欠压保护电路分析 输入过欠压保护电路仿真分析 阅读详情

相关推荐

基于AI Agent的数据治理实战:从架构设计到企业级落地

数据治理是确保企业数据质量、一致性与安全性的核心实践,其核心原理在于通过规范、流程与技术工具对数据进行全生命周期管理。传统人工治理模式效率低下且难以规模化,而大语言模型(LLM)与智能体(Agent)技术的发展,为数据治理的自动化与智能化带来了突破。通过将自然语言理解、任务规划与工具调用能力相结合,AI Agent能够将治理规则“代码化”与“智能化”,实现从被动响应到主动发现的模式转变。在应用场景上,AI Agent可扮演智能数据专员角色,自动执行元数据问答、数据质量探查、口径对齐等任务,显著提升数据团队效

weixin_34008805的博客 418

Valid Triangle Number (第十六周 数组)

Valid Triangle Number (第十六周 数组)

lin360580306的博客 580

【RTOS】 Vxworks 653 第一章 —— 初识 vx653 3.x

。。不是很重要,自己搜吧鲁棒分区是一种确保共享计算资源中独立运行功能实现​​时空隔离​​的机制,其目标是为集成模块中的混合临界性应用提供与联邦式部署(federated implementation)同等级别的功能隔离保障。具体表现为:​​多关键性共存​​:支持不同安全等级应用(如飞控系统A级与娱乐系统D级)在同一模块中协同运行。​​抗干扰能力​​:防止未授权或意外的时空干扰(如内存越界、时间窗口冲突),确保应用间互不影响。​​。

qq_38183694的博客 1280

有效三角形的个数-triangleNumber

题意 给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。 示例 1: 输入: [2,2,3,4] 输出: 3 解释: 有效的组合是: 2,3,4 (使用第一个 2) 2,3,4 (使用第二个 2) 2,2,3 注意: 数组长度不超过1000。 数组里整数的范围为 [0, 1000]。 解题思路 三角形定理,两条较小边大于第三边 双指针指向两个较小边 找第三边(ps大于两条小边) 具体代码 class Solution { public int triangleNumb

tangshuai96的博客 712

搭建微信机器人的方案都在这了!

功能超级强大,虽不支持二次开发,但已有的功能足够个人使用,可惜官方作品已被腾讯告死,好在市面上还流落着不少破解版,有需要的自行搜索。可惜的是,微信官方已不准许新的微信号再使用 web 登录,这就直接从源头扼杀了 web 协议的微信机器人,虽说老的微信号还是能凑合着用,不过部分功能也受限。所以,这些都属于 PC 端的微信机器人。无论是 PC 端还是手机端,用 hook 方式实现的最大缺点就是要和某一个版本的微信客户端进行绑定,如果框架本身不对最新版本的微信适配,那使用的时候就无法升级到最新版本的微信。

weixin_47246330的博客 1万+

知识导航神器:Obsidian Breadcrumbs 插件全攻略

Parent: 插件Child: Breadcrumbs 用法这样,它就能识别出你和其他笔记的关系。

m0_73735578的博客 1629

611. Valid Triangle Number

# 611. Valid Triangle Number标签(空格分隔): leetcode array medium—# 题目Given an array consists of non-negative integers, your task is to count the number of triplets chosen from the array that can make trian

分享人工智能学习心得与实践经验,探讨应用场景,见证变革与进步 648

GStreamer 源代码入门

GStreamer 是一个高度模块化的多媒体框架,其源代码结构清晰,设计精良。

深之JohnChen的专栏 951

leetcode611: Valid Triangle Number

Given an array consists of non-negative integers, your task is to count the number of triplets chosen from the array that can make triangles if we take them as side lengths of a triangle. Example 1

sinat_35425429的博客 900

【四足机器人项目实战】cheetah 3/mini运动控制工程解读(附C++代码)

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言一、主程序入口1.代码流程2.终端设置信息提示二、用MiniCheetahHardwareBridge类构造一个hw的对象并初初始化1.2.3.4.三、运行硬件桥驱动【MiniCheetahHardwareBridge】1.2.3.4.四、1.2.3.4.总结参考资料 前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对cheetah3/m

qq_35635374的博客 2615

Spring AI Alibaba实战训练营-14基于A2A协议智能体应用开发指南

本文介绍了基于A2A协议的智能体应用开发流程,主要包括客户端和服务端两个模块的实现。关键技术包括A2A通信协议、Nacos服务发现、Spring AI Alibaba框架和DashScope通义千问API。开发步骤涵盖环境准备(JDK17、Maven、Nacos)、项目创建、依赖配置(重点引入spring-ai-alibaba相关组件)以及Nacos和DashScope的核心配置。整个系统架构采用客户端通过Nacos发现服务端Agent,再调用阿里云AI服务的模式,实现了AI能力的解耦与复用。

program哲学 504

【LeetCode】611.Valid Triangle Number解题报告

【LeetCode】611.Valid Triangle Number解题报告tags: Array 题目地址:https://leetcode.com/problems/valid-triangle-number/description/ 题目描述:   Given an array consists of non-negative integers, your task is to cou

郝春雨的博客 1879

[3.4]【机器人运动学MATLAB实战分析】PUMA560机器人逆运动学MATLAB计算

PUMA560是六自由度关节型机器人,其6个关节都是转动副,属于6R型操作臂。各连杆坐标系如图1,连杆参数如表1所示。本文对PUMA560机器人逆运动学进行分析并MATLAB计算

m0_72676510的博客 1947

[leetcode]611. Valid Triangle Number有效三角数

Given an array consists of non-negative integers, your task is to count the number of triplets chosen from the array that can make triangles if we take them as side lengths of a triangle. Example 1: ...

weixin_30532973的博客 95

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

LeetCode 611. 有效三角形的个数(Valid Triangle Number)

611. 有效三角形的个数 611. Valid Triangle Number 题目描述 LeetCode LeetCode LeetCode611. Valid Triangle Number中等 Java 实现 import java.util.Arrays; class Solution { public int triangleNumber(int[] nums) { ...

weixin_30336061的博客 256

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Leetcode 611.有效三角形的个数(Valid Triangle Number)

Leetcode 611.有效三角形的个数 1 题目描述(Leetcode题目链接)   给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。 输入: [2,2,3,4] 输出: 3 解释: 有效的组合是: 2,3,4 (使用第一个 2) 2,3,4 (使用第二个 2) 2,2,3 注意: 数组长度不超过1000。 数组里整数的范围为 [0, 1000]。 2 题解   分析问题,三角形两边之和大于第三边,我们只判断较小的两边之和是否大于第三边就好了,因此先排序,令数组有

qq_39378221的博客 415

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

611. Valid Triangle Number**

611. Valid Triangle Number** https://leetcode.com/problems/valid-triangle-number/description/ 题目描述 Given an array consists of non-negative integers, your task is to count the number of triplets chosen...

珍妮的选择的博客 331

【Leetcode】611. Valid Triangle Number 有效三角形的个数

Given an array consists of non-negative integers, your task is to count the number of triplets chosen from the array that can make triangles if we take them as side lengths of a triangle. Example 1: ...

lemonmillie的博客 432

Leetcode 611. Valid Triangle Number O(nlogn) NTT

vector<unsigned> rev=[]() { vector<unsigned> Rev(2048,0); for(int i=0; i<2048; i++) Rev[i]=(Rev[i>>1]>>1)|((i&1)<<(10)); return Rev; }(); class Solution { publ...

StarInShadow的博客 304

[LeetCode] 611. Valid Triangle Number

题:https://leetcode.com/problems/valid-triangle-number/ 题目大意 从数组中取3个数,使得 这 3 个元素 可以组成 三角形。 思路 由于 抽取的方式 是 C 方法一 a + b &gt; c &amp;&amp; abs(a - b) &lt; c 上面 形成 三角形的公式。 对于确定的 a、b,我们只需要确定 c的位置。 对数组排序,按顺序...

u013383813的博客 226

Leetcode 611. Valid Triangle Number 有效三角形的个数

题目:给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。示例 1:输入: [2,2,3,4] 输出: 3 解释: 有效的组合是: 2,3,4 (使用第一个 2) 2,3,4 (使用第二个 2) 2,2,3 注意:数组长度不超过1000。数组里整数的范围为 [0, 1000]。解题思路:先对数组进行排序,优先确定最大的边长,然后寻找第二第三条边的范围。代码实现:使用b...

zhangzhetaojj的博客 864

leetcode 611. Valid Triangle Number | 611. 有效三角形的个数(Java)

题目 https://leetcode.com/problems/valid-triangle-number/ 题解 a, b, c 三指针,无剪枝优化,O(n^3),居然通过了。 思路是,用 a, c 固定首尾,让 b 在 a, c 之间从左至右游荡。 另外有 O(n^2) 的解法,详见:官方题解,本文不再详述。 class Solution { public int triangleNumber(int[] nums) { Arrays.sort(nums);

寒泉 4万+

LeetCode——611. 有效三角形的个数(Valid Triangle Number)[中等]——分析及代码(Java)

LeetCode——611. 有效三角形的个数[Valid Triangle Number][中等]——分析及代码[Java]一、题目二、分析及代码1. 排序 + 双指针(1)思路(2)代码(3)结果三、其他 一、题目 给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。 示例 1: 输入: [2,2,3,4] 输出: 3 解释: 有效的组合是: 2,3,4 (使用第一个 2) 2,3,4 (使用第二个 2) 2,2,3 注意: 数组长度不超过1000。 数组里整数的范围为

江南土豆的博客 350

[leetcode] 611. Valid Triangle Number

Description Given an array consists of non-negative integers, your task is to count the number of triplets chosen from the array that can make triangles if we take them as side lengths of a triangle. ...

Learning from the mistakes 283

【Leetcode】611. Valid Triangle Number

题目地址: https://leetcode.com/problems/valid-triangle-number/ 给定一个非负数组A[i]A[i]A[i],求其有多少个三元组可以组成三角形的三条边。 思路是双指针。如果数组长度小于333那直接返回000;否则的话将数组从小到大排序,从A[i]A[i]A[i]开始,判断A[0:i−1]A[0:i-1]A[0:i−1]之间有多少个数对的和是大于A[i]A[i]A[i]的,累加起来即可。代码如下: import java.util.Arrays; publi

数学、算法爱好者的博客 255

Leetcode——611. Valid Triangle Number

题目原址 https://leetcode.com/problems/valid-triangle-number/description/ 题目描述 Given an array consists of non-negative integers, your task is to count the number of triplets chosen from the array tha...

想当厨子的程序媛 573
上一篇: leetcode 605. Can Place Flowers(能否种花)
下一篇: leetcode 628. Maximum Product of Three Numbers(三个数的最大乘积)
蓝羽飞鸟
博客等级 码龄8年 1万+粉丝 727原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝羽飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值