在 Python 中查找环形大小为 N 的环中任意整数点到 A 和 B 的最小距离和
假设我们有一个环,它由 1 到 N 的一些数字组成。我们还有两个数字 A 和 B。现在,我们可以站在任何位置(比如 x)并执行关于总距离和(比如 Z = 从 X 到 A 的距离 + 从 X 到 B 的距离)的计数操作。我们必须选择 X 使得 Z 最小化。最后返回 Z 的值。我们必须记住,X 不会与 A 和 B 相同。
因此,如果输入类似于 N = 30,A = 10,B = 20,则输出将为 10,因为通过选择 X = 15,从 X 到 A 的距离为 5,从 X 到 B 的距离为 5。所以,总距离 = 5 + 5 = 10。
为了解决这个问题,我们将遵循以下步骤:
如果 a > b 不为零,则
交换 a 和 b
顺时针距离 := b - a
逆时针距离 := (a - 1) + (n - b + 1)
最小距离 := 顺时针距离和逆时针距离中的最小值
如果最小距离与 1 相同,则
返回 3
返回最小距离
示例
让我们看看以下实现以获得更好的理解:
def get_min_z(n, a, b): if (a > b): a, b = b, a clock_wise_dist = b - a counter_clock_wise_dist = (a - 1) + (n - b + 1) minimum_dist = min(clock_wise_dist, counter_clock_wise_dist) if (minimum_dist == 1): return 3 return minimum_dist n = 30 a = 10 b = 20 print(get_min_z(n, a, b))
输入
30, 10, 20
输出
10
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP