题目描述:
给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。
如果数组元素个数小于 2,则返回 0。
示例:
- 示例1:
输入: [3,6,9,1]
输出: 3
解释: 排序后的数组是 [1,3,6,9], 其中相邻元素 (3,6) 和 (6,9) 之间都存在最大差值 3。
- 示例2:
输入: [10]
输出: 0
解释: 数组元素个数小于 2,因此返回 0。
解题思路:
先将特殊的数值进行排除,如数组大小小于2、数组为空、数组中仅仅只有两个数的情况,再将无序的数组进行排序后遍历查找比较出绝对值差最大的值。
AC代码:
int maximumGap(int* nums, int numsSize) {
if(numsSize < 2 || nums == NULL)
{
return 0;
}
if(numsSize == 2)
{
return abs(nums[0] - nums[1]);
}
for(int i = 0; i < numsSize; i++)
{
for(int j= 0; j < numsSize - 1 - i; j++)
{
if(nums[j] > nums[j + 1])
{
int temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
}
}
}
int result = 0;
for(int k = 1; k < numsSize; k++)
{
if(result < abs(nums[k]-nums[k-1]))
{
result = abs(nums[k]-nums[k-1]);
}
}
return result;
}