オリジナルタイトル:
整数の順序付けられていないシーケンスを考えると、連続した数の最長シーケンスを見つけます。
例えば:
与えられた[100、4、200、1、3、2]、
連続した数の最長シーケンスは[1、2、3、4]です。
Xiaocaiによって与えられるソリューション:
コードコピーは次のとおりです。
function maxsequence(array、step){
var _array = array.slice()、// clone配列
_step = 1、
_arraytemp = []、
i = 0;
var parselogic = {
//結果コンテナ
parseresults:[]、
//配列に値を設定します
セット:function(n){
this.parseresults [this.parseresults.length-1] .push(n);
}、
// parseresultsから最後の配列を取得します
get:function(){
this.parseresults [this.parseresults.length-1];
}、
// parseresultsに新しい配列を入れます
additem:function(){
this.parseresults.push([]);
}、
// parseresultsを並べ替えます
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()を返します。
}
指示に電話:
方法名:
MaxSequence(配列、ステップ)
パラメーター説明:
配列:見つかる配列。必要。
ステップ:シーケンスステップ(増分)。オプション、デフォルトは1です。
返品値:
この方法は、着信配列を変更せず、最大のシーケンスを含む新しい配列を返します。
コール例:
最大順序([5,7,2,4,0,3,9]、1); //戻る[2,3,4,5]
最大順序([5,7,2,4,0,3,9]、2); //戻る[5,7,9]