`
dugu108
  • 浏览: 23325 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

求非递减数组中最小的绝对值

 
阅读更多
 给定一个有序整数序列(非递减序),可能包含负数,找出其中绝对值最小的元素,比如给定序列-5, -3, -1, 2, 8 则返回1。
public class MinAbs {
    public static int calculate(int[] array) {
        return calculate(array, 0, array.length - 1);
    }

    public static int calculate(int[] array, int low, int high) {
        if (low == high) {
            if (array[low] < 0 && low + 1 < array.length) {
                return Math.abs(array[low]) > Math.abs(array[low + 1]) ? Math.abs(array[low + 1]) : Math.abs(array[low]);
            } else if (array[low] > 0 && low - 1 >= 0) {
                return Math.abs(array[low]) > Math.abs(array[low - 1]) ? Math.abs(array[low - 1]) : Math.abs(array[low]);
            } else {
                return Math.abs(array[low]);
            }
        }

        int mid = (low + high) / 2;
        if (array[mid] >= 0) {
            return calculate(array, low, mid);
        } else {
            return calculate(array, mid + 1, high);
        }
    }

    public static void main(String[] args) {
        int[] array = { -5, -3, -1, 2, 8 };
        System.out.println(MinAbs.calculate(array));
    }
}
 
 
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics