当前位置: 首页 > news >正文

Leetcode 611. 有效三角形的个数

1.题目基本信息

1.1.题目描述

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

1.2.题目地址

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

2.解题方法

2.1.解题思路

升序排列后,去两条边a和b,取b后面的第三条边c;a+c>b和b+c>a一定成立,只需要保证a+b>c,则a、b、c就可以构成一个合法三角形

2.2.解题步骤

第一步,将nums进行升序排列

第二步,从0至length-3遍历第一条边i,如果边i长度为0,在跳过此次循环;从i至length-2遍历第二条边j,使用二分法找到在j+1至length-1之间的最后一个k,使nums[i]+nums[j]>nums[k]的,根据k和j获取此次的合法组合数,循环将所有的合法组合数进行累加,最终的累加值即为题解。

3.解题代码

Python代码

class Solution:def triangleNumber(self, nums: List[int]) -> int:length=len(nums)nums.sort()result=0for i in range(length-2):if nums[i]==0:continuefor j in range(i+1,length-1):# 二分找到j右边最后一个k,使得nums[i]+nums[j]>nums[k]# 红:nums[i]+nums[j]>nums[k]的k项,蓝:nums[i]+nums[j]<=nums[k]的k项。左闭右闭:left-1始终指向红色,right+1始终指向蓝色。最终的right即为需要的twoEdgesSum=nums[i]+nums[j]left,right=j+1,length-1while left<=right:mid=(right-left)//2+leftif nums[mid]<twoEdgesSum:left=mid+1else:right=mid-1result+=right-j# print(result)return result

C++代码

class Solution {
public:int triangleNumber(vector<int>& nums) {int length=nums.size();sort(nums.begin(),nums.end());int result=0;for(int i=0;i<length-2;++i){if(nums[i]==0)continue;for(int j=i+1;j<length-1;++j){int twoEdgesSum=nums[i]+nums[j];int left=j+1,right=length-1;while(left<=right){int mid=(right-left)/2+left;if(nums[mid]<twoEdgesSum){left=mid+1;}else{right=mid-1;}}result+=right-j;}}return result;}
};

4.执行结果

在这里插入图片描述


http://www.mrgr.cn/news/40399.html

相关文章:

  • 小学一年级教材识字表,写字表,笔画名称表,偏旁名称表大全,方便大家学习打印!
  • 关于malloc,calloc,realloc
  • MySQL中的InnoDB存储引擎
  • AMD CDNA™2 GPU 中的寄存器压力
  • C++模拟实现vector容器【万字模拟✨】
  • 基于51单片机的电压表电压监测proteus仿真
  • 第九讲-按钮控件QToolButton
  • 基于Springboot+Vue的基于协同过滤算法的个性化音乐推荐系统 (含源码数据库)
  • 【Python报错已解决】 WARNING: Ignoring invalid distribution
  • python 人工智能器学习和数据预处理中 连续变量,输入信号 x 被转换成条件向量 x̂
  • 足球青训管理:Spring Boot技术实现
  • 最小二乘法拟合
  • 【云原生安全篇】Cosign助力Harbor验证镜像实践
  • 昇思MindSpore进阶教程--下沉模式
  • 移动技术开发:音乐播放器
  • JS使用MutationObserver接口来监听DOM的更新
  • 设计模式(1)observer
  • void类型
  • 闭源与开源嵌入模型比较以及提升语义搜索效果的技术探讨
  • 樊登《在云端》【夸克云盘】更新樊登讲书 4k影视 云盘分享