원제:
정렬되지 않은 정수 시퀀스가 주어지면 연속된 숫자의 가장 긴 시퀀스를 찾습니다.
예:
주어진 [100, 4, 200, 1, 3, 2],
가장 긴 연속 숫자는 [1, 2, 3, 4]입니다.
Xiao Cai가 제공한 솔루션:
함수 maxSequence(배열,단계){
var _array = array.slice(), //배열 복제
_단계 = 1,
_arrayTemp = [],
나는 = 0;
var parparLogic = {
//결과 컨테이너
구문 분석 결과: [],
//값을 배열로 설정합니다.parseResults의 마지막 배열은 무엇입니까
설정: 함수(n){
This.parseResults[this.parseResults.length-1].push(n);
},
//parseResults에서 마지막 배열을 가져옵니다
가져오기: 함수(){
this.parseResults[this.parseResults.length-1];
반환
},
//parseResults에 새 배열 넣기
항목 추가: 함수(){
This.parseResults.push([]);
},
//parseResult 정렬
SortByAsc: 함수(){
This.parseResults.sort(function(a,b){
a.length - b.length;
반환
});
}
};
//매개변수 확인
_step = 단계 || _step;
//오름차순으로 배열 정렬
_array.sort(함수(a,b){
a - b 반환;
});
//반복 데이터 제거
for(i = 0;i<_array.length;i ){
If(_array[i] != _array[i 1]){
_arrayTemp.push(_array[i]);
}
}
_array = _arrayTemp.slice();
_arrayTemp = [];
//배열 분석
parsLogic.addItem();
for(i = 0;i<_array.length;i ){
If(_array[i] _step == _array[i 1]){
parseLogic.set(_array[i]);
계속하세요;
}
If(_array[i]-_step == _array[i-1]){
parseLogic.set(_array[i]);
parseLogic.addItem();
}
}
//결과 정렬
parsLogic.sortByAsc();
//최대 시퀀스 가져오기
ParseLogic.get()을 반환합니다.
}
전화 안내:
메소드 이름:
maxSequence(배열,단계)
매개변수 설명:
배열: 검색할 배열입니다. 필요한.
단계: 시퀀스 단계(증분). 선택 사항이며 기본값은 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]