JavaScript實(shí)現(xiàn)列出數(shù)組中最長(zhǎng)的連續(xù)數(shù)
原始題目:
給定一個(gè)無(wú)序的整數(shù)序列, 找最長(zhǎng)的連續(xù)數(shù)字序列。
例如:
給定[100, 4, 200, 1, 3, 2],
最長(zhǎng)的連續(xù)數(shù)字序列是[1, 2, 3, 4]。
小菜給出的解法:
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();
}
調(diào)用說明:
方法名稱:
maxSequence(array,step)
參數(shù)說明:
array:要查找的數(shù)組。必要。
step:序列步長(zhǎng)(增量)??蛇x,默認(rèn)為1。
返回值:
此方法不會(huì)改變傳入的數(shù)組,會(huì)返回一個(gè)包含最大序列的新數(shù)組。
調(diào)用示例:
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]
相關(guān)文章
js+html5實(shí)現(xiàn)側(cè)滑頁(yè)面效果
這篇文章主要為大家詳細(xì)介紹了js+html5實(shí)現(xiàn)側(cè)滑頁(yè)面效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
原生javascript實(shí)現(xiàn)自動(dòng)更新的時(shí)間日期
這篇文章主要介紹了原生javascript實(shí)現(xiàn)自動(dòng)更新的時(shí)間日期的相關(guān)資料,對(duì)實(shí)現(xiàn)代碼進(jìn)行詳細(xì)分析,感興趣的朋友可以參考一下2016-02-02
全面解析Bootstrap彈窗的實(shí)現(xiàn)方法
這篇文章全面解析Bootstrap彈窗的實(shí)現(xiàn)方法,對(duì)其結(jié)構(gòu)進(jìn)行詳細(xì)分析,感興趣的小伙伴們可以參考一下2015-12-12
詳解Webpack如何引入CDN鏈接來(lái)優(yōu)化編譯后的體積
這篇文章主要介紹了詳解Webpack如何引入CDN鏈接來(lái)優(yōu)化編譯后的體積,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
動(dòng)態(tài)載入/刪除/更新外部 JavaScript/Css 文件的代碼
動(dòng)態(tài)載入/刪除/更新外部 JavaScript/Css 文件的代碼2010-07-07
javascript設(shè)計(jì)簡(jiǎn)單的秒表計(jì)時(shí)器
這篇文章主要介紹了javascript設(shè)計(jì)簡(jiǎn)單的秒表計(jì)時(shí)器,該秒表將包括兩個(gè)按鈕和一個(gè)用于顯示時(shí)間的文本框,當(dāng)單擊開始按鈕時(shí)開始計(jì)時(shí),最小單位為0.01秒,此時(shí)再次單擊按鈕則停止計(jì)時(shí),文本框顯示經(jīng)過的時(shí)間,需要的朋友可以參考下2015-11-11
微信小程序MUI側(cè)滑導(dǎo)航菜單示例(Popup彈出式,左側(cè)不動(dòng),右側(cè)滑動(dòng))
這篇文章主要介紹了微信小程序MUI側(cè)滑導(dǎo)航菜單,結(jié)合實(shí)例形式分析了微信小程序Popup彈出式,左側(cè)不動(dòng),右側(cè)滑動(dòng)菜單相關(guān)實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下2019-01-01

