演算法問題-求陣列排序後最大相鄰數差
阿新 • • 發佈:2021-11-25
求最大相鄰數字
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