611. 有效三角形的个数

611. 有效三角形的个数

原题链接:

611. 有效三角形的个数

https://leetcode.cn/problems/valid-triangle-number/description/

完成情况:

解题思路:

复制代码
//给定一个包含非负整数的数组 nums ,返回其中可以组成三角形三条边的三元组个数。
	//1 <= nums.length <= 1000,最多只能双重for循环
	//怎么样才能组成三角形:   任意两边之和大于第三边,任意两边之差小于第三边
	//那就必须用两根指针,指向最大/最小,然后再开始移动

参考代码:

java 复制代码
package 西湖算法题解___中等题;

import java.lang.reflect.Array;
import java.util.Arrays;

public class __611有效三角形的个数 {
	public int triangleNumber(int[] nums) {
		//给定一个包含非负整数的数组 nums ,返回其中可以组成三角形三条边的三元组个数。
		//1 <= nums.length <= 1000,最多只能双重for循环
		//怎么样才能组成三角形:   任意两边之和大于第三边,任意两边之差小于第三边
		//那就必须用两根指针,指向最大/最小,然后再开始移动
		if (nums.length < 3){
			return 0;
		}
		int res = 0;
		Arrays.sort(nums);
		for (int i=nums.length -1;i>=2;i--){
			int left = 0,right = i-1;
			while (left < right){
				if (nums[left] + nums[right] <= nums[i]){
					left++;     //说明数小了
				}else { //说明当前数已经满足了要求,即当前范围内的任意值,我都可以取
					res += right - left;
					//这里就需要更换数值,避免使用到重复位置
					res += right - left;
					//left++;
					// 并且只能使用right--;,因为你的上一个res += right - left;里面其实就已经包含了下一个left++的位置情况
				}
			}
		}
		return res;
	}
}
相关推荐
机器人零零壹2 小时前
技术白皮书:iRobotCAM如何解决机器人激光切割应用中的核心难点,从CAD离线编程到双目视觉定位与轨迹自适应提升复杂空间曲线切割的精度、效率与柔性化水平
人工智能·算法
AI你一生一世4 小时前
不止于时序存储:DolphinDB 如何成为 AI 时代的工业智能底座
java·人工智能·struts·时序数据库·工业智能·dolphindb·ai基础设施
云-缩影4 小时前
拆解 AI 图像生成应用的后端架构:ECS、OSS 和大模型 API 怎么配合
java·spring boot·后端
瑞克-桑切斯4 小时前
7、MySQL 慢查询排查与优化实战指南
java·服务器·数据库
ZhengEnCi5 小时前
大模型的分类到底怎么分:从基础模型到推理模型、从通用到专用的完整图谱
算法
取名真是6 小时前
Python 算法知识点从基础到进阶
开发语言·python·算法
罗西的思考6 小时前
【轻量化复刻大模型 / KIMI K3】KDA 模块交互式演示
人工智能·算法·机器学习
nm_zfyjt8 小时前
信息流广告投放优化实践:线索成本评估模型与转化链路重构(家装建材案例)
算法·重构·内蒙古朋友圈广告服务商·内蒙古朋友圈获客
海的透彻9 小时前
dockerfile如何快速构建容器(java服务)
java·开发语言
code2cat9 小时前
Java工具篇之Gradle:用任务图组织构建与交付
java·开发语言·单元测试·gradle