其他分享
首页 > 其他分享> > 求数组最大值常用方法

求数组最大值常用方法

作者:互联网

今天六一儿童节,刷了一道leetcode题,是小孩子分糖果的题,也算是官方祝福了哈哈。

题中有求数组中最大值的问题(不用排序),我就是用最土的方法写的,写完看评论区,哎真是太low了,这种经常用到的代码块,还是有必要做得精简一点,于是借此罗列一下好看点的写法。

给出数组 K ,求其max_value.

最土方法

int n=K.size();
int max=K[0]; for(int i=1;i<n;i++){   if(max<K[i])
    max=K[i]; }
如果要定位最大值位置,就还要多一个变量pos;if语句里加一句:pos=i

此种方法最土,最没有水平,是学编程的第一节课就会用的方法。

C++使用max_element()函数

我们先看看max_element的源码:

template<class ForwardIterator>
ForwardIterator max_element(ForwardIterator first, ForwardIterator last)
{
    if(first == last)
        return first;
    ForwardIterator result = first; 
    while(++first != last)
        if(*result < *first)
            result = first;
    return result;
}

其返回的是迭代器,这里回顾下迭代器,迭代器是一种类型,可以用于指向容器中的元素,读取迭代器(*Iterator)可以读取元素,这一点类似指针。

向量的 begin()函数返回一个指向容器头部对象的迭代器,要注意的是,end()函数返回的迭代器,指向容器末再往后一个的位置。

我们可以从上述源码看出,结束条件是  ++first!=last,而不是我们常用的 i!=n-1,原因就在这里。

int max_value = *max_element(K.begin(), K.end());  K是vector
int max_value = *max_element(K, K+K_len);       K是数组

一句话就解决,这可好太多了。

……

 

标签:常用,迭代,max,最大值,ForwardIterator,element,result,数组,first
来源: https://www.cnblogs.com/cpcpp/p/13026438.html