오리지널 제목 :
정수의 정수 시퀀스가 주어지면 가장 긴 연속 숫자를 찾으십시오.
예를 들어:
주어진 [100, 4, 200, 1, 3, 2],
연속 숫자의 가장 긴 순서는 [1, 2, 3, 4]입니다.
Xiaocai가 제공 한 솔루션 :
코드 사본은 다음과 같습니다.
함수 max equessence (배열, 단계) {
var _array = array.slice (), // 클론 어레이
_step = 1,
_arraytemp = [],
i = 0;
var parselogic = {
// 결과 컨테이너
Parseresults : [],
// 값을 배열로 설정하면 마지막 구문 분석 항목은 무엇입니까?
세트 : 함수 (n) {
this.parseresults [this.parseresults.length-1] .push (n);
},
// parsereStult에서 마지막 배열을 가져옵니다
get : function () {
this.parseresults [this.parseresults.length-1];
},
// 구문 분석에 새 배열을 넣습니다
additem : function () {
this.parseresults.push ([]);
},
// ParserEnts를 정렬합니다
SORTBYASC : function () {
this.parseresults.sort (function (a, b) {
반환 a.length -B.length;
});
}
};
// 매개 변수를 확인합니다
_step = step || _단계;
// ASC의 배열 정렬
_array.sort (function (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 = [];
// 배열을 구문 분석합니다
parselogic.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 ();
}
}
// 결과를 정렬합니다
parselogic.sortbyasc ();
// 최대 시퀀스를 얻습니다
parselogic.get ();
}
통화 지침 :
메소드 이름 :
Max equence (배열, 단계)
매개 변수 설명 :
배열 : 배열을 찾을 수 있습니다. 필요한.
단계 : 시퀀스 단계 (증분). 선택 사항, 기본값은 1입니다.
반품 값 :
이 방법은 들어오는 배열을 변경하지 않으며 가장 큰 시퀀스가 포함 된 새 배열을 반환합니다.
Call example:
최대 순위 ([5,7,2,4,0,3,9], 1); // 반환 [2,3,4,5]
최대 순위 ([5,7,2,4,0,9], 2); // 반환 [5,7,9]