• 面试题 16.06. 最小差


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

    示例:

    首先需要对两个数组进行排序;

    排序之后

    a = [1, 2, 3, 11, 15]

    b = [8, 19, 23, 127, 235]

    定义两个指针i和j分别用来扫a和b

    当a[i]和b[j]时获得了一个差值,此时需要判断连个列表中指针的移动方向:

    如果a[i] > b[j],那么需要移动j指针,否则差值只会变大

    如果a[i] < b[j],那么需要移动i指针,否则差值只会变大

    代码如下:

    class Solution:
        def smallestDifference(self, a: List[int], b: List[int]) -> int:
            a.sort()
            b.sort()
    
            i, j, res = 0, 0, 1 << 60
            while i < len(a) and j < len(b):
                res = min(res, abs(a[i] - b[j]))
                if a[i] > b[j]:
                    j = j + 1
                else:
                    i = i + 1
            
            return res
  • 相关阅读:
    day11课堂小结 函数作用域
    猜年龄函数版day10作业
    函数day10课堂小结
    day07作业
    文件处理day09
    编码day08
    默写
    day07课堂小结
    day06作业
    const与define应用上该怎么取舍
  • 原文地址:https://www.cnblogs.com/canaan233/p/13721261.html
Copyright © 2020-2023  润新知