【发布时间】:2021-05-24 14:31:58
【问题描述】:
给定一个未排序的数组,需要得到所有非连续元素对。
Input [2,3,4,5,9,8,10,13]
Desired output (2,5)(8,10)(13,13)
解释:
Input = [2,3,4,5,9,8,10,13]
如果我们按照给定数组的递增顺序创建序列,那么它将是:
[2,3,4,5,8,9,10,13]
现在,如果分解为序列中断的组:
[2,3,4,5]
[8,9,10]
[13]
然后,输出将是组的第一个和最后一个数字,如果组中只有一个数字,那么它将被视为快速和最后一个。
输出:
[2,5][8,10][13,13]
我的解决方法:
var array = [2,3,4,5,9,8,10,13]
var input = array.sort((a,b)=>{return a-b});
var group = [];
var start = input[0];
for(let i = 0; i<input.length; i++){
if(input[i+1] - input[i] > 1){
group.push([start,input[i]])
start = input[i+1];
}
}
console.log(group);
输出:
[ [ 2, 5 ], [ 8, 10 ] ]
【问题讨论】:
-
大概是因为编辑显示您的尝试,有几票可以重新打开这个问题。如果您还添加了更多解释,我会添加我自己的。我真的不明白你要做什么。
-
@ScottSauyet - 如
input/desired output中所见,需要找出一对不连续的数字,同时更新问题。 -
输入数组是否会包含重复值?
-
@Thankyou - 是的,输入是一个包含重复的未排序数字数组。
标签: javascript arrays algorithm