面试题 16.06. 最小差

题目描述

 给定两个整数数组a和b,计算具有最小差绝对值的一对数值(每个数组中取一个值),并返回该对数值的差

原题请参考链接https://leetcode-cn.com/problems/smallest-difference-lcci/

题解

方法一 【双指针】

class Solution:
    def smallestDifference(self, a: List[int], b: List[int]) -> int:
        p0 =0  # 指向第一个列表的指针
        p1 = 0  # 指向第二个列表的指针
        l0 = len(a)
        l1 = len(b)
        a.sort()
        b.sort()
        res =  2147483647
        while p0 < l0 or p1 < l1:
            res = min(res,abs(a[p0]-b[p1]))
            if a[p0] <= b[p1] and p0+1 < l0:
                p0 += 1
            elif a[p0] > b[p1] and p1+1 < l1:
                p1 += 1
            elif a[p0] <= b[p1] and p0+1>=l0 and p1+1 < l1:
                p1 += 1
            elif a[p0] > b[p1] and p1+1 >= l1 and p0+1< l0:
                p0 += 1
            else:
                break
        return res
posted @ 2021-02-18 13:08  Bladers  阅读(89)  评论(0)    收藏  举报