笔试题-0

在一组数中,求差值的最大的,不过这里的差值是左边的一个数,减去一个他右边的数,两个数不需要相邻。

这里给出一种较快速的解法。

// test-2.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <vector>

int fuck(const std::vector<int> &v)
{
    if (v.size() == 1)
        return v[0];

    int min = *v.crbegin();
    int max_differ = v[0] - v[1];

    for (auto it = v.crbegin() + 1; it != v.crend(); ++it)
    {
        if (*(it - 1) < min)
        {
            min = *(it - 1);
        }

        if (*it - min > max_differ)
        {
            max_differ = *it - min;
        }
    }

    return max_differ;
}

int _tmain(int argc, _TCHAR* argv[])
{

    std::vector<int> v{ 1, 3, 4, 5, 6, 8, 54, 2, 5, 674, 12, 4, 6, 46, -2, -4542,-900, 435, 9 };

    std::cout << fuck(v) << std::endl;
    return 0;
}
原文地址:https://www.cnblogs.com/shuimojun/p/4587064.html