ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript は、array_javascript スキル内の最長連続番号のリストを実装します。

JavaScript は、array_javascript スキル内の最長連続番号のリストを実装します。

WBOY
WBOYオリジナル
2016-05-16 16:23:271178ブラウズ

元のタイトル:

順序のない整数シーケンスが与えられた場合、連続する数字の最長シーケンスを見つけます。

例:

与えられた [100, 4, 200, 1, 3, 2]、

最も長く連続する数字の並びは [1、2、3、4] です。

Xiao Cai が与えた解決策:

コードをコピーします コードは次のとおりです:

関数 maxSequence(配列,ステップ){
var _array = array.slice(), //配列のクローンを作成します
_ステップ = 1,
_arrayTemp = [],
i = 0;
var parseLogic = {
//結果コンテナ
解析結果: []、
// 値を配列に設定します。parseResults
の最後の配列は何ですか? セット: function(n){
This.parseResults[this.parseResults.length-1].push(n);
}、
// parseResults
から最後の配列を取得します 取得: 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;
});
}
};
//パラメータをチェック
_ステップ = ステップ || _ステップ;
// 配列を asc でソート
_array.sort(関数(a,b){
a - b を返します;
});
//データの繰り返しを削除
for(i = 0;i<_array.length> If(_array[i] != _array[i 1]){
_arrayTemp.push(_array[i]);
}
}
_array = _arrayTemp.slice();
_arrayTemp = [];
//配列を解析
parseLogic.addItem();
for(i = 0;i<_array.length> 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 です。

戻り値:

このメソッドは渡された配列を変更しませんが、最大のシーケンスを含む新しい配列を返します。

呼び出し例:

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]

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。