美文网首页
有序正负数组最近0的两个数

有序正负数组最近0的两个数

作者: M_lear | 来源:发表于2021-12-30 23:55 被阅读0次

保证数组有正负数。

解法:二分查找+最小的两个数

public class Solution {
  public int[] closed0TwoNum(int[] a) {
    // 找最接近0的非负数
    int i = binarySearch(a, 0);

    // 添加候选集
    List<Integer> candidates = new ArrayList<>();
    candidates.add(a[i]);
    candidates.add(a[i-1]);
    if (i + 1 < a.length) candidates.add(a[i+1]);
    if (i - 2 >= 0) candidates.add(a[i-2]);

    // 找绝对值最小的两个数
    int closed0 = Integer.MAX_VALUE, secClosed0 = Integer.MAX_VALUE;
    for (int e : candidates) {
      int absE = Math.abs(e);
      int absClosed0 = Math.abs(closed0);
      int absSecClosed0 = Math.abs(secClosed0);
      if (absE < absClosed0) {
        secClosed0 = closed0;
        closed0 = e;
      } else if (absE < absSecClosed0) {
        secClosed0 = e;
      }
    }
    return new int[]{closed0, secClosed0};
  }

  // 二分查找大于等于target的最小值
  private int binarySearch(int[] a, int target) {
    int low = 0, high = a.length - 1;
    while (low <= high) {
      int mid = (low + high) >>> 1;
      if (a[mid] > target) high = mid - 1;
      else if (a[mid] < target) low = mid + 1;
      else return mid;
    }
    return low;
  }
}

相关文章

  • 有序正负数组最近0的两个数

    保证数组有正负数。 解法:二分查找+最小的两个数

  • js 合并两个有序数组 成一个有序数组

    将两个有序数组合并成一个有序数组,假设两个数组,a和b合并成c. 我的想法是,以b数组作为参照,从下标0 开始 逐...

  • 合并有序数组

    思路 同合并有序链表 使用两个变量从0开始记录两个数组比较的元素下标使用while循环比较两个数组中元素的大小(比...

  • 4. 寻找两个有序数组的中位数

    分析 已知两个有序数组,找到两个数组合并后的中位数。 解法一 简单粗暴,先将两个数组合并,两个有序数组的合并也是归...

  • 有序数组合并

    1、两个有序数组合并(产生新数组) 2、两个有序数组合并(返回原来某个数组)

  • 看了这篇,你不可能学不会快速排序和归并排序

    一、两者对比 快速排序 当两个子数组都有序时,整个数组也就有序 递归调用发生在处理整个数组之后 切分的位置取决于数...

  • 插入排序

    插入排序是将数组分为2个部分,有序区和无序区; 排序开始时,将第0个数据加入到有序数组进行排序,这时只有一个数据,...

  • LeetCode 力扣 88. 合并两个有序数组

    题目描述(简单难度) 给两个有序数组,把第二个数组合并到第一个数组中,保持有序。可以注意到第一个数组已经为我们多开...

  • 【Leetcode】【Python】268. Missing N

    问题描述: 给出从0到n的n+1个数字中的n个数,找到缺失的那个数字注意:给定的数组并不一定是有序的数组 代码示例...

  • 数据结构参考

    1. 数组 一个数组有序的组织元素,一个接一个放在内存中。每一个数组都有一个从0开始的索引值index。 优点: ...

网友评论

      本文标题:有序正负数组最近0的两个数

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