【优选算法】5----有效三角形个数

server/2025/1/24 16:13:32/

又是一篇算法题,今天早上刚做的热乎的~

其实我是想写博客但不知道写些什么(就水一下啦)

-------------------------------------begin-----------------------------------------

题目解析:

这道题的题目算是最近几道算法题里面题目最短的,但是单单看题目的话,我就只知道有一个数

组,需要我们去返回其中符合三角形特性的三条边,所以我们可以从示例入手,了解这道算法需要

我们去实现的地方~

讲解算法原理:

先说暴力解法吧,我们就需要用到三个for循环来进行遍历,时间复杂度为O(n^3),在力扣上面肯

定是编译不过的,所以在这个基础上,我们需要优化算法~

新思路:我们可以将所给数组先进行排序,排序成单调递增的数组,两个指针left和right,left指

针从位置0向右遍历,right从n-1位置向左遍历,分两种情况,两指针所指数的和大于位置i的值和

小于位置i的值,再定义一个ret变量,用于储存有效三角形的个数~

编写代码:

class Solution 
{
public:int triangleNumber(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;}
};

差不多就是这个样子啦~

题目链接直达->

611. 有效三角形的个数 - 力扣(LeetCode)

----------------------------------------end----------------------------------------


http://www.ppmy.cn/server/161056.html

相关文章

k8s使用nfs持久卷

开启持久化卷后可以实现服务开启在不同节点也能读取到和拿到服务节点的文件。 基本流程为将集群中一个节点作为服务节点安装共享储存应用的服务端选择目录和开启端口&#xff0c;其他节点根据端口挂载目录。然后使用kubesphere选择相应的镜像并将端口信息和挂载目录信息作为参…

Couchbase UI: Bucket

Couchbase UI 中的 Bucket 页面是管理和监控 bucket&#xff08;数据存储单元&#xff09;的核心部分&#xff0c;它提供了关于 bucket 的详细信息和操作功能。以下是 Bucket 页面主要功能和各部分的介绍&#xff1a; 1. Bucket 列表 (Buckets Overview) 在页面顶部会列出集…

Android各个版本存储权限适配

一、Android6.0-9.0 1、动态权限申请&#xff1a; private static String[] arrPermissions {android.Manifest.permission.READ_EXTERNAL_STORAGE, android.Manifest.permission.WRITE_EXTERNAL_STORAGE,android.Manifest.permission.ACCESS_FINE_LOCATION,android.Manifest.…

leetcode 2920. 收集所有金币可获得的最大积分

题目&#xff1a;2920. 收集所有金币可获得的最大积分 - 力扣&#xff08;LeetCode&#xff09; 看数据范围是需要O(n*log(n))的算法。可以用dfs记忆化搜索。 考虑到coins[i]的范围是[0, 10000]&#xff0c;最多除个十几次2就变成0了。所以用w[i][j]表述节点i在除以j次后&…

上位机知识篇---ROS2命令行命令静态链接库动态链接库

文章目录 前言第一部分&#xff1a;ROS2命令行命令1. 基础命令&#xff08;1&#xff09;ros2 run&#xff08;2&#xff09;ros2 launch&#xff08;3&#xff09;ros2 node&#xff08;4&#xff09;ros2 topic&#xff08;5&#xff09;ros2 service&#xff08;6&#xff0…

基于微信小程序的健身管理系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

Android 极光推送快速开发集成指南(1)

<activity android:name“cn.jpush.android.ui.PushActivity” android:configChanges“orientation|keyboardHidden” android:exported“false” android:theme“android:style/Theme.NoTitleBar” tools:ignore“DuplicateActivity”> <activity android:nam…

PyQt5之QLCDNumber

1. 描述 展示LCD样式的数字&#xff0c;它可以显示几乎任何大小的数字&#xff0c;可以显示十进制&#xff0c;十六进制&#xff0c;八进制或二进制数。 继承自QFrame 2.功能作用 (1) 构造函数 QLCDNumber(parent: QWidget None) QLCDNumber(int, parent: QWidget None)…