array_javascript 기술에서 가장 긴 연속 숫자 시퀀스를 찾는 JavaScript 구현

WBOY
풀어 주다: 2016-05-16 16:37:38
원래의
2147명이 탐색했습니다.

원제:

정렬되지 않은 정수 시퀀스가 ​​주어지면 연속된 숫자의 가장 긴 시퀀스를 찾습니다.

예:

주어진 [100, 4, 200, 1, 3, 2],

가장 긴 연속 숫자는 [1, 2, 3, 4]입니다.

Xiao Cai가 제공한 솔루션:

function maxSequence(array,step){
var _array = array.slice(), //clone array
_step = 1,
_arrayTemp = [],
i = 0;

var parseLogic = {
//result container
parseResults: [],
//set value to array,what's the last array of parseResults
set: function(n){
this.parseResults[this.parseResults.length-1].push(n);
},
//get the last array from parseResults
get: function(){
return this.parseResults[this.parseResults.length-1];
},
//put a new array in parseResults
addItem: function(){
this.parseResults.push([]);
},
//sort parseResults
sortByAsc: function(){
this.parseResults.sort(function(a,b){
return a.length - b.length;
});
}
};

//check params
_step = step || _step;

//sort array by asc
_array.sort(function(a,b){
return a - b;
});

//remove repeat of data
for(i = 0;i<_array.length;i++){
if(_array[i] != _array[i+1]){
_arrayTemp.push(_array[i]);
}
}
_array = _arrayTemp.slice();
_arrayTemp = [];

//parse array
parseLogic.addItem();
for(i = 0;i<_array.length;i++){
if(_array[i]+_step == _array[i+1]){
parseLogic.set(_array[i]);
continue;
}
if(_array[i]-_step == _array[i-1]){
parseLogic.set(_array[i]);
parseLogic.addItem();
}
}

//sort result
parseLogic.sortByAsc();

//get the max sequence
return parseLogic.get();

}
로그인 후 복사

전화 안내:

메소드 이름:

maxSequence(배열,단계)

매개변수 설명:

array: 검색할 배열입니다. 필요한.

단계: 시퀀스 단계 크기(증분). 선택 사항이며 기본값은 1입니다.

반환 값:

이 메서드는 전달된 배열을 변경하지 않고 가장 큰 시퀀스가 ​​포함된 새 배열을 반환합니다.

통화 예:

maxSequence([5,7,2,4,0,3,9],1); //return [2,3,4,5]
maxSequence([5,7,2,4,0,3,9],2); //return [5,7,9]
로그인 후 복사

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!