为了账号安全,请及时绑定邮箱和手机立即绑定

求解一道排序算法题

求解一道排序算法题

SMILET 2019-04-27 22:19:51
letarr=[1,2,3,4,5,6,6,7,8,9,10,10,10,11,12,12,4,5]如何通过js把它切成[1,2,3,4,5,6][6,6][6,7,8,9,10][10,10,10][10,11,12][12,12][12,4,5]规则:1、相邻不同的合为一组;2、相邻相同的合为一组。
查看完整描述

2 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

letarr=[1,2,3,4,5,6,6,7,8,9,10,10,10,11,12,12,4,5]
letsplitArray=function(A){
letglobal=[[A[0]]],local=global[0]
for(vari=1;iletp=local[local.length-1],pp=local[local.length-2]
if(A[i]===p&&(p===pp||!pp)||A[i]!==p&&p!==pp){
local.push(A[i])
}else{
local=[A[i-1],A[i]]
global.push(local)
}
}
returnglobal
}
console.log(splitArray(arr))
                            
查看完整回答
反对 回复 2019-04-27
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

functionmerge(arr){
let_arr=[];//临时存储
letresult=[];
if(arr.length===0){
return[];
}elseif(arr.length===1){
return[arr];
}
_arr=[arr[0]];
//从第1个开始循环
for(leti=1,len=arr.length;i//若当前的数与前一个不相等
if(arr[i]!==arr[i-1]){
_arr.push(arr[i]);
//若当前的数与后一个相等时,则说明当前的队列完成
if(arr[i]===arr[i+1]){
result.push(_arr);
_arr=[arr[i]];
}
}else{
_arr.push(arr[i]);
if(arr[i]!==arr[i+1]){
result.push(_arr);
_arr=[arr[i]];
}
}
if(i===len-1){
result.push(_arr);
}
}
returnresult;
}
测试样例:
vararr=[1,2,3,4,5,6,6,7,8,9,10,10,10,11,12,12,4,5];
console.log(merge(arr));
/*
[
[1,2,3,4,5,6]
[6,6]
[6,7,8,9,10]
[10,10,10]
[10,11,12]
[12,12]
[12,4,5]
]
*/
vararr=[];
console.log(merge(arr));//[]
vararr=[1];
console.log(merge(arr));
/*
[
[1]
]
*/
vararr=[1,2];
console.log(merge(arr));
/*
[
[1,2]
]
*/
vararr=[1,2,3];
console.log(merge(arr));
/*
[
[1,2,3]
]
*/
vararr=[1,1,2,2,3];
console.log(merge(arr));
/*
[
[1,1]
[1,2]
[2,2]
[2,3]
]
*/
                            
查看完整回答
反对 回复 2019-04-27
  • 2 回答
  • 0 关注
  • 316 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信