如果我有一个整数列表,我该如何编写一个函数来发送列表中数字之间的最小正差?一个例子可以是这样的:
列表1,3,5,6->差1(6和5之间)
在评论中进行讨论之后,我不会尝试编写完整的解决方案,但是会给您一些提示,使您的功能正常工作。
如果要查找后续数字之间的最小差异,则可以使用List.pairwise
函数,该函数会为您提供带有后续数字的元组列表。然后,您可以将其传递给List.map
以将元组列表转换为差异列表(通过从另一个中减去一个),并传递给List.min
以找到最小的元组。
> [1;3;5;6] |> List.pairwise;;
val it : (int * int) list = [(1, 3); (3, 5); (5, 6)]
如果您正在寻找任意两个数字之间的最小差,那么我将首先使用List.sort
对列表进行排序,然后执行与上述相同的操作-对列表进行排序将确保您需要减去这些数字才能得出最小的差异将彼此相邻。