在 Python 中查找方程的最大值的程序

在 Python 中查找方程的最大值的程序

假设我们有一个名为“points”的数组,其中包含在二维平面上的坐标点,它们按照x值进行排序,其中 points[i] = (x_i, y_i),因此 x_i < x_j 对于所有 1 <= i < j <= 点的数量。我们还有另一个值k。我们必须找到方程式y_i + y_j + |x_i – x_j|的最大值,其中 |x_i – x_j| <= k and 1 <= i < j <= 点的数量。

因此,如果输入是points = [[2,4],[3,1],[6,11],[7,-9]] k = 1,那么输出将是6,因为前两个点符合条件 |xi – xj| <= 1,现在如果我们计算方程的值,我们得到 4+1+|2-3|=6。第三个和第四个点也符合条件,返回一个值11+ -9 +|6 – 7| = 3,因此最大值为6。

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

  • left := 0,right := 1

  • max_value := -inf

  • 当 right < size of points 时,do

    • (xl, yl) := points[left]

    • (xr, yr) := points[right]

    • diff := |xr – xl|

    • 如果 left 与 right 相同,则

      • right := right + 1
    • 否则当 diff <= k 时,then
      • m := yl + yr + diff

      • max_value := max(max_value, m)

      • 如果 yl >= yr – diff,则

      • right := right + 1

      • 否则,

      • left := left + 1

      • 否则,

      • left := left + 1

  • 返回 max_value

示例

让我们看一下以下实现,以获得更好的理解

def solve(points, k):
   left, right = 0, 1
   max_value = float('-inf')

   while right < len(points):
      xl, yl = points[left]
      xr, yr = points[right]

      diff = abs(xr - xl)
      if left == right:
         right += 1
      elif diff <= k:
         m = yl + yr + diff
         max_value = max(max_value, m)
         if yl >= yr - diff:
            right += 1
         else:
            left += 1
      else:
         left += 1

   return max_value

points = [[2,4],[3,1],[6,11],[7,-9]]
k = 1
print(solve(points, k))

输入

[[2,4],[3,1],[6,11],[7,-9]],1

输出

6

完整的HTML格式的中文翻译如下:

在 Python 中查找方程的最大值的程序

假设我们有一个名为“points”的数组,其中包含在二维平面上的坐标点,它们按照x值进行排序,其中 points[i] = (x_i, y_i),因此 x_i < x_j 对于所有 1 <= i < j <= 点的数量。我们还有另一个值k。我们必须找到方程式y_i + y_j + |x_i – x_j|的最大值,其中 |x_i – x_j| <= k and 1 <= i < j <= 点的数量。

因此,如果输入是points = [[2,4],[3,1],[6,11],[7,-9]] k = 1,那么输出将是6,因为前两个点符合条件 |xi – xj| <= 1,现在如果我们计算方程的值,我们得到4+1+|2-3|=6。第三个和第四个点也符合条件,返回一个值11+ -9 +|6 – 7| = 3,因此最大值为6。

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

  • left := 0,right := 1

  • max_value := -inf

  • 当 right < size of points 时,do

    • (xl, yl) := points[left]

    • (xr, yr) := points[right]

    • diff := |xr – xl|

    • 如果 left 与 right 相同,则

      • right := right + 1
    • 否则当 diff <= k 时,then
      • m := yl + yr + diff

      • max_value := max(max_value, m)

      • 如果 yl >= yr – diff,则

      • right := right + 1

      • 否则,

      • left := left + 1

      • 否则,

      • left := left + 1

  • 返回 max_value

示例

让我们看一下以下实现,以获得更好的理解

def solve(points, k):
   left, right = 0, 1
   max_value = float('-inf')

   while right < len(points):
      xl, yl = points[left]
      xr, yr = points[right]

      diff = abs(xr - xl)
      if left == right:
         right += 1
      elif diff <= k:
         m = yl + yr + diff
         max_value = max(max_value, m)
         if yl >= yr - diff:
            right += 1
         else:
            left += 1
      else:
         left += 1

   return max_value

points = [[2,4],[3,1],[6,11],[7,-9]]
k = 1
print(solve(points, k))

输入

[[2,4],[3,1],[6,11],[7,-9]],1

输出: 6

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程