给定一个未经排序的数组, 请找出这个数组排序之后的两个相邻元素之间最大的间距.
如果数组中少于 2 个元素, 返回 0.
样例
样例 1:
输入: [1, 9, 2, 5]
输出: 4
解释: 排序之后的数组是 [1, 2, 5, 9], 最大的间距是在 5 和 9 之间.
样例 2:
输入: [1]
输出: 0
解释: 数组中的元素少于 2 个.
挑战
直接排序很容易, 但是时间复杂度是 O(nlogn), 尝试使用线性时间和空间复杂度的方法解决这个问题.
注意事项
可以假定数组中的所有要素都是非负整数,且最大不超过 32 位整数。
思路:暴力解法,先排序,遍历的得到最大间距
class Solution {
public:
/**
* @param nums: an array of integers
* @return: the maximun difference
*/
int maximumGap(vector<int> &nums) {
// write your code here
if(nums.size()<2)return 0;
sort(nums.begin(),nums.end());
int res=0;
for (int i = 1; i < nums.size(); i++) {
res=max(res,nums[i]-nums[i-1]);
}
return res;
}
};