LeetCode:164、最大間距
阿新 • • 發佈:2019-01-24
題目描述:
給定一個無序的陣列,找出陣列在排序之後,相鄰元素之間最大的差值。
如果陣列元素個數小於 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; }