###题目要求
Given an unsorted array, find the maximum difference between the successive elements in its sorted form.
Return 0 if the array contains less than 2 elements.
Notice:
You may assume all elements in the array are non-negative integers and fit in the 32-bit signed integer range.
Example:
Given [1, 9, 2, 5], the sorted form of it is [1, 2, 5, 9], the maximum gap is between 5 and 9 = 4.
###代码
import java.util.Arrays;
/**
* Created by Administrator on 2017/6/16.
*/
public class solution {
// public static int maximumGap(int[] nums) {
// // write your code here
// Arrays.sort(nums);
// int[] numsStorge = new int[nums.length];
// int Index = 0;
// for(int n : nums){
// 会导致数组numsStorge只有两个值,因此剩余的索引会默认以0的形式填充
// if(n==nums[0]){
// numsStorge[Index] = 0;
// }else{
// Index++;
// numsStorge[Index]=n-nums[Index-1];
// System.out.println(Index);
// }
// }
// Arrays.sort(numsStorge);
// if(numsStorge.length == 0){
// return numsStorge[0];
// }
// for(int n:numsStorge){
// System.out.print(n+",");
// }
// return numsStorge[Index];
}
class Solution {
/**
* @param nums: an array of integers
* @return: the maximum difference
*/
public int maximumGap(int[] nums) {
// write your code here
Arrays.sort(nums);
int[] numsStorge = new int[nums.length];
int Index = 0;
for(int n : nums){
if(n == nums[0]){
numsStorge[Index++] = 0;
}else{
numsStorge[Index]=n-nums[Index-1];
Index++;
//Index++ 在遇到下一个Index之前都不舍执行+1操作,直到遇到下一个,就会先执行+1,再执行语句的逻辑顺序。
//numsStorge[Index++]=n-nums[Index-1];
}
}
Arrays.sort(numsStorge);
return numsStorge[Index-1];
//return numsStorge[numsStorge.length-1];
}}
//}
###纠错
- 会导致数组numsStorge只有两个值,因此剩余的索引会默认以0的形式填充
if(n==nums[0]){
numsStorge[Index] = 0;
- Index++ 在遇到下一个Index之前都不舍执行+1操作,直到遇到下一个,就会先执行+1,再执行语句的逻辑顺序。
numsStorge[Index++]=n-nums[Index-1];
###总结
当使用数组的最末位时,请使用 (Array.length-1)
如下图:
return numsStorge[numsStorge.length-1];