在一组数中,求差值的最大的,不过这里的差值是左边的一个数,减去一个他右边的数,两个数不需要相邻。
这里给出一种较快速的解法。
// 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; }