程序从Python中的两个数字列表中查找最大距离对

假设我们有两个数字列表,分别称为A和B,它们的长度相同。我们必须找到所有0≤i <j <n的最大值:| a [i]-a [j] | + | b [i]-b [j] | + | i-j |

因此,如果输入像A = [2,4,10,6] B = [3,4,7,5],那么输出将是14,就像当i = 0和j = 2时,我们得到|。 2-10 | + | 3 -7 | + | 1-3-。

为了解决这个问题,我们将遵循以下步骤-

  • 回答:= 0

  • n:=一个的大小

  • 对于[[-1,-1),(-1,1),(1,-1),(1,1)]中的每对(s,t)

    • tmp:= s * a [i] + t * b [i] + i

    • cur_min:=最小cur_min,tmp

    • cur_max:= cur_max,tmp的最大值

    • cur_min:=无穷大

    • cur_max:=-无穷大

    • 对于0到n范围内的i,执行

    • ans:= ans的最大值,(cur_max-cur_min)

    • 返回ans

    让我们看下面的实现以更好地理解-

    示例

    class Solution:
       def solve(self, a, b):
          ans = 0
          n = len(a)
          for s, t in [(-1, -1), (-1, 1), (1, -1), (1, 1)]:
             cur_min = float("inf")
             cur_max = float("-inf")
             for i in range(n):
                tmp = s * a[i] + t * b[i] + i
                cur_min = min(cur_min, tmp)
                cur_max = max(cur_max, tmp)
                ans = max(ans, cur_max - cur_min)
          return ans
    ob = Solution()A = [2, 4, 10, 6]
    B = [3, 4, 7, 5]
    print(ob.solve(A, B))

    输入值

    [2, 4, 10, 6],[3, 4, 7, 5]

    输出结果

    14
    猜你喜欢