美文网首页
求数组中的峰值

求数组中的峰值

作者: leon4ever | 来源:发表于2018-03-19 21:17 被阅读27次

在一个由n个元素的整型数组中,找出符合以下两个条件的所有元素,要求时间复杂度为O(n);

  1. 该元素比它前面所有数都大
  2. 该元素比它后面所有数都小
class Solution{
public:
    vector<int> find(vector<int>& nums){
    vector<int> result;
    if(nums.empty())
        return result;
    const int length = nums.size();
    vector<int> helpmin(length);

    int minvalue = nums[length-1];
//注意此处循环是不能判断nums[i],因为找到是这个位置之后的最小值。。弱智吗
    for(int i = length-2; i>=0; --i){
        minvalue = minvalue<nums[i+1]?minvalue:nums[i+1];
        helpmin[i] = minvalue;
    }

    int maxvalue = nums[0];
    for(int i = 1; i< length; ++i){
        maxvalue = maxvalue>nums[i-1]?maxvalue:nums[i-1];
        if(nums[i]>maxvalue && nums[i]<helpmin[i])
            result.push_back(nums[i]);
    }

    return result;
}
};

即便是做过的题,也还是错了。。。果然还是太菜了嘛

相关文章

  • 求数组中的峰值

    在一个由n个元素的整型数组中,找出符合以下两个条件的所有元素,要求时间复杂度为O(n); 该元素比它前面所有数都大...

  • Day77 寻找峰值

    给你一个输入数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在...

  • LeetCode习题:寻找峰值

    题目描述:峰值元素是指其值大于左右相邻值的元素。给你一个输入数组 nums,找到峰值元素并返回其索引。数组可能包含...

  • 162. 寻找峰值

    题目: 峰值元素是指其值严格大于左右相邻值的元素。 给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能...

  • 寻找峰值

    描述 给定一个长度为n的数组nums,请你找到峰值并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个所...

  • 力扣 162. 寻找峰值

    峰值元素是指其值严格大于左右相邻值的元素。给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰...

  • LeetCode-162-寻找峰值

    寻找峰值 题目描述:峰值元素是指其值大于左右相邻值的元素。给你一个输入数组 nums,找到峰值元素并返回其索引。数...

  • 2018-05-25

    python 1.python中数组和矩阵乘法及使用总结 对数组的运算 矩阵求逆,转置,求迹

  • 10-6 求无序数组中的中位数算法

    求无序数组中的中位数算法

  • [LeetCode][Python]162. 寻找峰值

    [LeetCode][Python]162. 寻找峰值 峰值元素是指其值大于左右相邻值的元素。 给定一个输入数组 ...

网友评论

      本文标题:求数组中的峰值

      本文链接:https://www.haomeiwen.com/subject/olqmqftx.html