JavaScript實(shí)現(xiàn)找出數(shù)組中最長的連續(xù)數(shù)字序列
原始題目:
給定一個(gè)無序的整數(shù)序列, 找最長的連續(xù)數(shù)字序列。
例如:
給定[100, 4, 200, 1, 3, 2],
最長的連續(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:序列步長(增量)??蛇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)文章
bootstrap-table后端分頁功能完整實(shí)例
這篇文章主要介紹了bootstrap-table后端分頁功能,結(jié)合完整實(shí)例形式分析了bootstrap-table后端請求、數(shù)據(jù)分頁功能具體步驟與實(shí)現(xiàn)技巧,需要的朋友可以參考下2020-06-06使用 JavaScript 進(jìn)行函數(shù)式編程 (一) 翻譯
本文是函數(shù)式編程系列的第一篇文章。這里我會(huì)簡要介紹一下編程范式,然后會(huì)直接介紹使用 Javascript 進(jìn)行函數(shù)式編程的概念,因?yàn)?JavsScript 是最被認(rèn)可的函數(shù)式程序語言之一。我們鼓勵(lì)讀者通過參考資料部分進(jìn)一步了解這一迷人的概念2015-10-10微信小程序上傳帖子的實(shí)例代碼(含有文字圖片的微信驗(yàn)證)
這篇文章主要介紹了小程序上傳帖子(含有文字圖片的微信驗(yàn)證)的實(shí)例代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07JavaScript如何把兩個(gè)數(shù)組對象合并過程解析
這篇文章主要介紹了JavaScript如何把兩個(gè)數(shù)組對象合并過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10