如何将整数数组显示为一组范围?(算法)

Era*_*rin 8 language-agnostic arrays algorithm range

给定一个整数数组,迭代它并找出它涵盖的所有范围的最简单方法是什么?例如,对于如下数组:

$numbers = array(1,3,4,5,6,8,11,12,14,15,16);
Run Code Online (Sandbox Code Playgroud)

范围是:

 1,3-6,8,11-12,14-16
Run Code Online (Sandbox Code Playgroud)

Dim*_*ima 14

如果数组按升序排序,则问题很容易.定义一个Range结构或类,它有一个开头和一个结尾.然后浏览阵列.如果当前元素比前一个元素多一个,则更新Range.end,否则使用此元素创建一个新范围Range.begin.将范围存储到动态数组或链接列表.或者只是随时打印出来.

如果可能未对数组进行排序,请先对其进行排序.