首页 > 编程语言 > 详细

求数组最大值常用方法

时间:2020-06-01 18:03:02      阅读:95      评论:0      收藏:0      [点我收藏+]

今天六一儿童节,刷了一道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是数组

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

……

 

求数组最大值常用方法

原文:https://www.cnblogs.com/cpcpp/p/13026438.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!