【数组】-找出有序数组中(有负有正)绝对值最小的数

写在前面

  最近想复习一下数据结构与算法相关的内容,找一些题来做一做。如有更好思路,欢迎指正。


目录

  • 写在前面
  • 一、场景描述
  • 二、具体步骤
    • 1.环境说明
    • 2.代码
  • 写在后面


一、场景描述

  给定一个有序数组,该数组中的元素有正有负,请找出绝对值最小的数。
示例:{-5, -3, -1, 0, 2, 4},返回 0

  这多简单呢,循环数组,一一比较,比出最小的不就完了嘛?
先取出-5,绝对值为5;取出-3,绝对值为3,5比3大,取3… 取0;0和2比,取0;0和4比,取0。
不对呀! 到0之后,正数的就不用比了,那负数的呢?


二、具体步骤

1.环境说明

名称 说明
IntelliJ IDEA 2019.2

2.代码

以下为Java版本实现:


public class ArraySortedFindAbsMin {

    public static void main(String[] args) {
        int[] array = {-5, -3, -1, 0, 2, 4};
        int minAbs = findMinAbs(array);
        System.out.println(minAbs);
    }

    /**
     * 思路:
     * 2个关键词,有序数组 + 绝对值最小
     *
     * 1.有序数组:常见的方法二分查找,可查大可查小
     * 2.绝对值最小:意味着距离坐标原点最近
     * 小于0的数,从小到大,绝对值是在变小
     * 大于0的数,从小到大,绝对值是在变大
     *
     * @param array 有序数组
     * @return
     */
    private static int findMinAbs(int[] array) {
        int i = 0;
        while (array[i] < 0) {
            i++;
        }

        if (array[i - 1] + array[i] <= 0) {
            return array[i];
        }

        return array[i - 1];
    }

}

写在后面

  如果本文内容对您有价值或者有启发的话,欢迎点赞、关注、评论和转发。您的反馈和陪伴将促进我们共同进步和成长。

你可能感兴趣的:(数据结构与算法,java,算法,数组)