算法问题-求数组排序后最大相邻数差

求最大相邻数字

2,6,3,4,5,10,9
利用位图概念,讲最大值作为新数组长度,最小值作为偏移量,通过当前元素减去偏移量,放到位图里,设置为1,其他的设置为0

package algorithm.ispowerof2.getmaxsorteddistance;

public class GetMaxSortedDistance {

    //利用类似位图的概念去解决
    public static int getMaxDistance(int[] arr) {
        int min = arr[0];
        int max = arr[0];
        for (int i = 0; i < arr.length; i++) {
            min = min < arr[i] ? min : arr[i];
            max = max >= arr[i] ? max : arr[i];
        }

        int[] temp = new int[max];
        for (int i = 0; i < arr.length; i++) {
            temp[arr[i] - min] = 1;
        }

        int res = 0;
        int start = 0;
        for (int i = 0; i < temp.length; i++) {
            if(temp[i]==0 && i-1!=-1 && temp[i-1]!=0){
                start = i-1;
            }
            if(temp[i]!=0  && i-1!=-1 && temp[i-1]==0){
                res = res>(i-start)?res:(i-start);
            }
        }
        return res;

    }

    public static void main(String[] args) {
        int[] arr = {2,6,3,4,5,10,9};
        System.out.println(getMaxDistance(arr));
    }
}

结果
3
posted @ 2021-11-25 11:12  小傻孩丶儿  阅读(29)  评论(0编辑  收藏  举报