【双指针_有效三角形的个数_C++】

题目解析

有效三角形的个数

判断三角形:任意两边之和大于第三边

需要重复计算:

知识点

1、需要判断三次:

2、只需要判断一次

复制代码
已经知道这三个数的大小(先进行排序)
只需要判断
较小的两个数之和 是否 大于最大的数
就可以得出是否可以构成三角形

算法原理

1、先对整个数组进行排序

2、再去固定最大的数

3、在最大的数的左边区间内使用双指针 算法进行统计符合条件的三元组的个数

编写代码

cpp 复制代码
class Solution {
public:
    int triangleNumber(vector<int>& nums) {
        // 1、排序(从小到大)
        sort(nums.begin(),nums.end());
        // 2、去固定最大的数
        int i = 0;
        int n = nums.size();
        int sum = 0;

        for(i=n-1;i>=2;i--){
        // 3、right每次是从i-1开始(left从0开始)
            int left = 0;
            int right = i-1;

            while(left<right){
                if(nums[left]+nums[right]>nums[i]){
                    sum+=right-left;
                    right--;
                }else{
                    left++;
                }
            }
        }
        return sum;
    }
};
相关推荐
望眼欲穿的程序猿42 分钟前
Win系统Vscode+CoNan+Cmake实现调试与构建
c语言·c++·后端
lzh200409191 小时前
【C++STL】List详解
开发语言·c++
luoyayun3611 小时前
Qt/C++ 线程池TaskPool与 Worker 框架实践
c++·qt·线程池·taskpool
喵个咪1 小时前
ASIO 定时器完全指南:类型解析、API 用法与实战示例
c++·后端
phdsky2 小时前
【设计模式】抽象工厂模式
c++·设计模式·抽象工厂模式
雾岛听蓝2 小时前
C++ 入门核心知识点(从 C 过渡到 C++ 基础)
开发语言·c++·经验分享·visual studio
xlq223223 小时前
19.模版进阶(上)
c++
yuuki2332333 小时前
【C++】初识C++基础
c语言·c++·后端
小年糕是糕手3 小时前
【C++】类和对象(二) -- 构造函数、析构函数
java·c语言·开发语言·数据结构·c++·算法·leetcode
玫瑰花店4 小时前
SomeIP报文详解
c++·someip