【OJ刷题】双指针问题4

这里是阿川的博客,祝您变得更强 ✨ 个人主页:在线OJ的阿川

💖文章专栏:OJ刷题入门到进阶
🌏代码仓库:


写在开头

现在您看到的是我的结论或想法但在这背后凝结了大量的思考、经验和讨论


目录

  • [1. 题目介绍](#1. 题目介绍)
  • [2. 题目拆解](#2. 题目拆解)
  • [3. 具体详情](#3. 具体详情)
  • [4. 具体代码](#4. 具体代码)

1. 题目介绍

难度:中
题目练习有效三角形的个数
题目信息 :给定一个包含非负整数的数组 nums ,返回其中可以组成三角形三条边的三元组个数。
举个例子: 具体如图1所示

图1 举个例子


2. 题目拆解

本质上:观察规律,利用单调性
特点是:在组合搭配中有一定单调性规律
解决方法:双指针算法,如图2所示

图2 双指针


3. 具体详情

1. 先进行排序
2. 固定其中最大的数,再将最小和第二大数作为双指针对最大数进行比较
3. 两种情况:

  • 最小和第二大数之和大于最大数,则中间数与第二大数组合均符合要求,再将第二大树数移动减小
  • 最小和第二大数之和小于或等于最大数,则中间数与最小数组合均不符合要求,再将最小数移动增大

4. 最后再将最大数移动减小,直至遍历完整个数组


4. 具体代码

cpp 复制代码
class Solution {
public:
    int triangleNumber(vector<int>& nums)
    {
        // 进行排序
        sort(nums.begin(), nums.end());
        int sum = 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])
                {
                    sum += right - left;
                    right--;
                }
                else
                {
                    left++;
                }
            }
        }
        return sum;

    }
};
  1. 夹带私货

若你能看到看到这篇文章且能看到这 ,则说明你我有缘留个关注吧 ,后面还会接着计算机408、底层原理、开源项目、以及数据、后端研发相关、实习、笔试/面试、秋招/春招、各种竞赛相关、简历相关、考研、学术相关......,祝你我变得更强


好的,到此为止啦,祝您变得更强

道阻且长 行则将至
个人主页:在线OJ的阿川大佬的支持和鼓励,将是我成长路上最大的动力
相关推荐
通信仿真爱好者10 分钟前
第【60期】--大规模MIMO系统信号检测算法误码率比较 --matlab完整代码+参考文章
算法·matlab·mimo·信号检测
AI科技星26 分钟前
全域谱分析:无穷维超复数信息场分形统一场论——自然、量子、金融多重分形第一性原理完整体系(中英双语终稿)
人工智能·python·算法·金融·乖乖数学·全域数学
渣渣灰飞1 小时前
MySQL 系统学习 第二阶段 第三章 DQL(Data Query Language)第二节:WHERE 条件查询
sql·学习·mysql
先吃饱再说1 小时前
为什么堆能 O(log n) 插入?拆解完全二叉树的数组魔法
算法·排序算法
心中有国也有家1 小时前
AtomGit Flutter 鸿蒙客户端:E-Brufen 架构设计
学习·flutter·华为·harmonyos
留白_2 小时前
【决策树】泰坦尼克号生存预测
算法·决策树·机器学习
hssfscv2 小时前
QT的学习笔记4——QMainWindow、资源文件以及主要控件的介绍
笔记·qt·学习
hqzing2 小时前
鸿蒙 PC 底层开发技术详解(七):二进制自签名算法的实现
算法·华为·harmonyos
AI科技星2 小时前
超复数全域经济周期场与信息谱场——金融与密码学底层理论重构《0·1·∞三元一体全域超复数统一场论》系列全集(六一字不漏完整合订终版)
人工智能·算法·金融·密码学·拓扑学·乖乖数学·全域数学
小小的代码里面挖呀挖呀挖2 小时前
杰理蓝牙耳机开发--LE Audio与游戏耳机应用
笔记·单片机·物联网·学习