假设我们有一个环,它是由从1到N的几个数字组成的。我们也有两个数字A和B。现在,我们可以站在任何地方(例如x),并根据的总和执行计数操作。距离(例如Z = X到A的距离+ X到B的距离)。我们必须选择X以使Z最小。最后返回Z的值。我们必须记住X不会与A和B相同。
因此,如果输入为N = 30,A = 10,B = 20,那么通过选择X = 15,输出将为10,从X到A的距离为5,从X到B的距离为5。 ,总距离= 5 + 5 = 10。
为了解决这个问题,我们将遵循以下步骤-
如果a> b为非零,则
交换a和b
clock_wise_dist:= b-a
counter_clock_wise_dist:=(a-1)+(n-b + 1)
minimum_dist:= clock_wise_dist,counter_clock_wise_dist的最小值
如果minimum_dist与1相同,则
返回3
返回minimum_dist
让我们看下面的实现以更好地理解-
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