前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >最小差

最小差

作者头像
一份执着✘
发布2018-06-04 16:38:51
5170
发布2018-06-04 16:38:51
举报
文章被收录于专栏:赵俊的Java专栏

题意

给定两个整数数组(第一个是数组 A,第二个是数组 B),在数组 A 中取 A[i],数组 B 中取 B[j],A[i] 和 B[j]两者的差越小越好(|A[i] - B[j]|)。返回最小差。

样例

给定数组 A = [3,4,6,7], B = [2,3,8,9],返回 0

思路

首先对两个数组进行排序,然后设 2 个指针 i, j 分别指向 A 和 B 的第一个元素,依次向后遍历,取 A[i] - A[j] 的绝对值,就是差值,将遍历过程中最小的差值记录下来,若遍历过程中 A[i] == A[j] ,那么就直接返回 0。

代码实现

代码语言:javascript
复制
public class Solution {
    /**
     * @param A, B: Two integer arrays.
     * @return: Their smallest difference.
     */
    public int smallestDifference(int[] A, int[] B) {
        if (A == null || A.length == 0 || B == null || B.length == 0) {
            return 0;
        }
        
        Arrays.sort(A);
        Arrays.sort(B);
        
        int i = 0;
        int j = 0;
        int min = Integer.MAX_VALUE;
        while (i < A.length && j < B.length) {
            min = Math.min(min, Math.abs(A[i] - B[j]));
            if (A[i] > B[j]) {
                j++;
            } else if (A[i] < B[j]) {
                i++;
            } else {
                return 0;
            }
        }
        return min;
    }
}

原题地址

LintCode:最小差

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-08-102,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题意
  • 样例
  • 思路
  • 代码实现
  • 原题地址
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档