通过从左到右旋转 2 个列表,找到两个列表中每个对应项之间差异的绝对值的最小可能总和,因为它们的长度相同。
旋转样品:
List [0, 1, 2, 3, 4, 5] rotated to the left = [1, 2, 3, 4, 5, 0]
List [0, 1, 2, 3, 4, 5] rotated to the right= [5, 0, 1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
绝对差之和:
List 1 = [1, 2, 3, 4]
List 2 = [5, 6, 7, 8]
Sum of Abs. Diff. = |1-5| + |2-6| + |3-7| + |4-8| = 16
Run Code Online (Sandbox Code Playgroud)
再一次,对于任意长度的列表和整数值,任务是通过简单地旋转到一个或两个列表的左/右来寻找最小的总和。
我对旋转和获取最小绝对差和没有问题。我只想知道更聪明的方法,因为我的算法会检查每个可能的组合,这很慢。
这是我的蛮力方法:
list1 = [45, 21, 64, 33, 49] …Run Code Online (Sandbox Code Playgroud)