在升序陣列中:求絕對值最小的數:思路分三步,需要注意邊界:len = length-1,引數陣列個數為空,為1的條件等;
阿新 • • 發佈:2018-11-03
package com.interview.datastructure; import java.util.Arrays; public class MinAbsoluteValue { public static void main(String[] args) { int array[] = {-3, -2, -1, 1, 7, 9, 11}; int min = Min(array); System.out.println(min); } public static int Min(int array[]) { int len = array.length - 1; //全部都是大於0的 if (array[0] >= 0) { return array[0]; } //全部都是小於0的 else if (array[len - 1] <= 0) { return array[len - 1]; } //陣列中是有大於0也有小於0的 需要先找到正數與負數交界的地方 else { int mid = 0; while (mid < len - 1) { mid = mid + (len - mid) / 2; if (array[mid] == 0) { return array[mid]; } else if (array[mid] > 0) { if (array[mid - 1] == 0) return 0; else if (array[mid - 1] < 0) { if (Math.abs(array[mid]) < Math.abs(array[mid - 1])) { return Math.abs(array[mid]); } else return Math.abs(array[mid - 1]); } } else { if (array[mid + 1] == 0) return 0; else if (array[mid - 1] > 0) { if (Math.abs(array[mid]) < Math.abs(array[mid - 1])) { return Math.abs(array[mid]); } else return Math.abs(array[mid - 1]); } } } } return 0; } }
package com.interview.datastructure; import java.util.Arrays; public class MinAbsoluteValue { public static void main(String[] args) { int array[] = {-3, -3, -3}; int min = Min(array); System.out.println(min); } public static int Min(int array[]) { if (array.length == 0) return Integer.MIN_VALUE; int len = array.length - 1; if (len < 1) return Math.abs(array[0]); //全部都是大於0的 if (array[0] >= 0) { return Math.abs(array[0]); } //全部都是小於0的 else if (array[len - 1] <= 0) { return Math.abs(array[len - 1]); } //陣列中是有大於0也有小於0的 需要先找到正數與負數交界的地方 else { int mid = 0; while (mid < len - 1) { mid = mid + (len - mid) / 2; if (array[mid] == 0) { return 0; } else if (array[mid] > 0) { if (array[mid - 1] == 0) return 0; else if (array[mid - 1] < 0) { if (Math.abs(array[mid]) < Math.abs(array[mid - 1])) { return Math.abs(array[mid]); } else return Math.abs(array[mid - 1]); } } else { if (array[mid + 1] == 0) return 0; else if (array[mid - 1] > 0) { if (Math.abs(array[mid]) < Math.abs(array[mid - 1])) { return Math.abs(array[mid]); } else return Math.abs(array[mid - 1]); } } } } return 0; }}