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

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

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

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

题目解析:

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

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

我们去实现的地方~

讲解算法原理:

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

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

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

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

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

编写代码:

cpp 复制代码
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----------------------------------------

相关推荐
海绵宝宝转agent34 分钟前
LeetCodehot100题解
java·笔记·学习·算法·leetcode·深度优先
octopus_c40 分钟前
C++ 运算符重载详解 && 日期类的实现
开发语言·c++
青少儿编程课堂43 分钟前
2026蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:堆排序与优先队列解析
c++·python·算法·bfs·信息学竞赛
j7~1 小时前
【C++ 面试笔记】(篇二):类与数据抽象 & STL 容器与算法
开发语言·c++·面试·stl容器和算法·类和数据抽象
Fuyo_11191 小时前
深入解析 C++ unordered_set 与 unordered_map 的核心特性与性能实战
开发语言·c++
码匠许师傅1 小时前
【C++三方组件】FFmpeg:音视频处理的瑞士军刀
c++·ffmpeg·音视频
SZYSK1 小时前
OpenHarmony 上读卡、推理和双屏刷新抢 CPU:核验机与消费机的调度差
物联网·算法·harmonyos·1024程序员节
ShineWinsu2 小时前
对于Qt:QPushButton常见属性的解析
开发语言·c++·qt·api·gui·按钮·qpushbutton
Ivanqhz2 小时前
MoE + LLM 应用
数据库·人工智能·pytorch·python·深度学习·算法·1024程序员节
Lhan.zzZ2 小时前
用 Qt 构建线程安全的通讯静态库:从线程亲和性到完整工程
c++·vscode·qt·tcp/ip·udp