美文网首页
求一个有序数组中绝对值最小的值

求一个有序数组中绝对值最小的值

作者: watermountain | 来源:发表于2019-04-02 21:12 被阅读0次

    有一个已经排序的数组(升序),数组中可能有正数、负数或0,求数组中元素的绝对值最小的数,要求,不能用顺序比较的方法(复杂度需要小于O(n)),可以使用任何语言实现

    例如,数组{-20,-13,-4, 6, 77,200} ,绝对值最小的是-4。

    解一:

    public int minValueOfAbs(int[] array) {

            int len = array.length;

            if (array[0] >= 0) {

                return array[0];

            } else if (array[len - 1] <= 0) {

                return array[len - 1];

            }

            int low = 0;

            int high = len - 1;

            while (low <= high) {

                int mid = (low + high) / 2;

                if (array[mid] > 0) {

                    if (array[mid - 1] < 0) {

                        return Math.abs(array[mid]) > Math.abs(array[mid - 1]) ? array[mid - 1] : array[mid];

                    }

                    high = mid - 1;

                } else if (array[mid] < 0) {

                    low = mid + 1;

                } else {

                    return array[mid];

                }

            }

            return -1;

        }

    相关文章

      网友评论

          本文标题:求一个有序数组中绝对值最小的值

          本文链接:https://www.haomeiwen.com/subject/emcwbqtx.html