Leetcode2058 找出临界点之间的最小和最大距离

一、问题描述

二、解题思路

本题的思路比较明显,可以使用模拟的方法来解决这个问题。

(1)首先,遍历链表,记录极大值点和极小值点的下标,将其按顺序放入Index向量中;

(2)链表遍历完毕后检查Index向量:

<1>如果Index.size()<2,直接返回{-1,-1};

<2>否则,查找minDistance和maxDistance,再返回;

(3)maxDistance等于Index.back()-Index0,minDistance需要遍历Index向量,寻找相邻两个元素最小的差值(贪心)。**其实可以加一点小小的优化,如果minDistance已经为1了,那就不用再查找了。**最后返回{minDistance,maxDistance}即可。

三、代码实现

cpp 复制代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    vector<int> nodesBetweenCriticalPoints(ListNode* head) {
        //记录每一个极值点的下标
        vector<int> Index;
        int index=0;
        ListNode * cur=head->next;
        ListNode * front=head;
        ListNode * behind=nullptr;
        while((cur!=nullptr)&&(cur->next!=nullptr)){
            index++;behind=cur->next;
            if(front->val>cur->val&&behind->val>cur->val) Index.push_back(index);
            else if(front->val<cur->val&&behind->val<cur->val) Index.push_back(index);
            front=cur;cur=cur->next;
        }
        //特殊情况处理
        if(Index.size()<2) return {-1,-1};
        //最大距离
        int maxDistance=Index.back()-Index[0];
        int minDistance=INT_MAX;
        for(int i=0;i!=Index.size()-1;i++){
            minDistance=min(minDistance,Index[i+1]-Index[i]);
        }
        return {minDistance,maxDistance};
    }
};
相关推荐
智码看视界8 分钟前
C++智能指针全景剖析及面试20问
开发语言·c++·深度学习·面试·内存管理·智能指针
Peregrine944 分钟前
C++ - > 类和对象
java·c++·算法
Gigavision2 小时前
DEAP数据集 2026最新Transformer算法 DEAP 数据集 下载
深度学习·算法·transformer
夜之眷属2 小时前
PriorityQueue:for-each 遍历和 poll 取出,顺序一样吗?
java·服务器·数据结构·后端·算法
‎ദ്ദിᵔ.˛.ᵔ₎2 小时前
c++11:fuction包装器
开发语言·c++
思维新观察3 小时前
三星 Galaxy Tab S12 系列:大屏 AI 平板,兼顾轻薄与生产力
数据结构·人工智能·电脑
地平线开发者3 小时前
不是线程越多越快:用 hrt_model_exec 在 征程6M 上给 YOLOv5x 建立性能基线
算法
霍霍的袁3 小时前
【C++】哈希表实现指南:从原理到开放定址法、链地址法的实现
c++·学习·哈希算法·散列表·visual studio
姜鱼问生3 小时前
fail2ban 实战:从默认配置到生产可用
后端·算法·架构
垆边人似月.3 小时前
华为题:全排列
算法·深度优先·图论