给定一个无序的数组,找出数组在排序之后,相邻元素之前的最大的差值,如果数组元素个数小于2,则返回0,c++全部代码,不需要algorithm算法
时间: 2024-09-12 13:02:34 浏览: 68
详解JS取出两个数组中的不同或相同元素
当需要在给定无序数组中找到排序后最大相邻元素差值时,可以遍历数组一次并维护两个变量,一个用于存储当前最小元素,另一个用于存储当前最大元素。遍历过程中,如果遇到比当前最小元素还小的元素,更新最小元素;如果遇到比当前最大元素还大的元素,计算此时的最大差值,并更新最大差值。遍历结束后,如果没有找到连续的元素,即数组长度小于2,返回0。
以下是C++代码实现:
```cpp
#include <vector>
using namespace std;
int maxAdjacentDifference(const vector<int>& nums) {
if (nums.size() < 2) return 0;
int minNum = nums[0];
int maxDiff = 0;
for (size_t i = 1; i < nums.size(); ++i) {
if (nums[i] < minNum) {
minNum = nums[i];
} else {
maxDiff = max(maxDiff, nums[i] - minNum);
}
}
return maxDiff;
}
```
这个函数接收一个`vector<int>`类型的输入,代表无序数组。它首先检查数组长度,然后通过循环处理数组中的每个元素,最后返回找到的最大差值。
阅读全文