JavaScript實現找出數組中最長的連續數字序列,javascript數組

來源:互聯網
上載者:User

JavaScript實現找出數組中最長的連續數字序列,javascript數組

原始題目:

給定一個無序的整數序列, 找最長的連續數字序列。

例如:

給定[100, 4, 200, 1, 3, 2],

最長的連續數字序列是[1, 2, 3, 4]。

小菜給出的解法:

function maxSequence(array,step){var _array = array.slice(), //clone array_step = 1,_arrayTemp = [],i = 0;var parseLogic = {//result containerparseResults: [],//set value to array,what's the last array of parseResultsset: function(n){this.parseResults[this.parseResults.length-1].push(n);},//get the last array from parseResultsget: function(){return this.parseResults[this.parseResults.length-1];},//put a new array in parseResultsaddItem: function(){this.parseResults.push([]);},//sort parseResultssortByAsc: 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 datafor(i = 0;i<_array.length;i++){if(_array[i] != _array[i+1]){_arrayTemp.push(_array[i]);}}_array = _arrayTemp.slice();_arrayTemp = [];//parse arrayparseLogic.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 resultparseLogic.sortByAsc();//get the max sequencereturn parseLogic.get();}

調用說明:

方法名稱:

maxSequence(array,step)

參數說明:

array:要尋找的數組。必要。

step:序列步長(增量)。可選,預設為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]


Javascript數組判斷某個相同值的元素個數

樓主要高效率?還是簡便啊,總之2個我都覺得挺難,都需要遍曆.下面提供一個稍微好一點點的吧,先把數組排序好再遍曆,額,不知道是不會簡便一點,偶也不知道...排序好了後再遍曆的話可能會快點點..
var strArray = new Array();
strArray={0,1,1,3,0,-2,100,2,100}

strArray.sort(function(a,b){return a-b;});
 
javascript 怎去掉 數組中重複的元素

因為數組的長度不能變,所以要想“去掉”只能重定義一個數組
//假設oldArray為原數組,newArray為最後結果,可以做一個函數

function f(Array oldArray){
Array newArray; //目標數組

var m=oldArray.length;
for(var i=0;i<m;i++){
var flag=true;
var n=newArray.length;
for(var j=0;j<n;j++)
if(newArray[ j ] == oldArray[i])
flag=false;
if(flag)
newArray[n]=oldArray[i];
}
return newArray;
}
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.