lintCode --- Maximum Gap

###题目要求

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];
   }}

//}

###纠错

  1. 会导致数组numsStorge只有两个值,因此剩余的索引会默认以0的形式填充
if(n==nums[0]){
numsStorge[Index] = 0;
  1. Index++ 在遇到下一个Index之前都不舍执行+1操作,直到遇到下一个,就会先执行+1,再执行语句的逻辑顺序。
numsStorge[Index++]=n-nums[Index-1];

###总结

当使用数组的最末位时,请使用 (Array.length-1) 如下图:

return numsStorge[numsStorge.length-1];

转载于:https://my.oschina.net/kxln1314/blog/974090

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值