題目描述:獲取乙個陣列中最長的元素序列。例如,給定了[31,6,32,1,3,2],其中最長的連續的元素序列是[1,2,3],最後返回其長度3
分析:判斷當前節點是屬於乙個序列的,只需判斷前乙個或者後乙個節點也在序列中即可,即判斷array[i]-1和array[i]+1也是位於這個序列中即可。如果這樣判斷的話,就需要儲存過程中的部分值,為此,可以採用雜湊表來儲存計算的中間值。
#include "stdafx.h"
#include
#include
#include
using namespace std;
struct bound
};int lengthoflongestconsecutivesequence(vector&num)
local=num[i];
int low=num[i],high=num[i];
if(table.count(local-1))
if(table.count(local+1))
table[low].high=table[local].high=high;
table[high].low=table[local].low=low;
if(high-low+1>maxlen)
}return maxlen;
}int _tmain(int argc, _tchar* argv)
;vectorarr2(6);
for(int i=0;i<6;i++)
int sum=lengthoflongestconsecutivesequence(arr2);
coutreturn 0;
}
求乙個陣列的最長連續子串行
分析 如果允許o nlogn 的複雜度,那麼可以先排序,可是本題要求o n 由於序列裡的元素是無序的,又要求o n 首先要想到用雜湊表。用乙個雜湊表unordered mapused 記錄每個元素是否使用,對每個元素,以該元素為中心,往左右擴張,直到不連續為止,記錄下最長的長度。class solu...
js 獲取乙個陣列中的部分元素
可以用array中自帶的方法 arrayobj.shift shift 方法可移除陣列中的第乙個元素並返回該元素。例如 var ary 1,2,3,4 var a ary.shift a 1 ary 2,3,4 arrayobj.slice start,end slice 方法返回乙個 array ...
乙個陣列有 N 個元素,求連續子陣列的最大和
輸入描述 輸入為兩行。第一行乙個整數n 1 n 100000 表示一共有n個元素 第二行為n個數,即每個元素,每個 整數都在32位int範圍內。以空格分隔。輸出描述 所有連續子陣列中和最大的值。示例1 輸入3 1 2 1輸出3 我們用pos代表即將要加的數,sum從0開始一直 pos,並每次進行判斷...