分析:
如果允許o(nlogn)的複雜度,那麼可以先排序,可是本題要求o(n)。
由於序列裡的元素是無序的,又要求o(n),首先要想到用雜湊表。
用乙個雜湊表unordered_mapused 記錄每個元素是否使用,
對每個元素,以該元素為中心,往左右擴張,直到不連續為止,記錄下最長的長度。
class solution
for(int j=i-1;used.find(j)!=used.end();--j)
longest= longest > length ? longest:length;
}return longest;
}};
求乙個陣列的最長遞減子串行
其實這個題目和求最長遞增子串行的題目是乙個思想,就是用dp做 如下 dp5.cpp 定義控制台應用程式的入口點。include stdafx.h include using namespace std const int max 1000 int dp max int data max 找到最長遞增...
求乙個陣列的連續子陣列的最大和
輸入乙個整型陣列,陣列中有正有負。陣列中的乙個或多個整數組成乙個子陣列。求所有子陣列的和的最大值,要求時間複雜度為o n 首先,根據題意,可能我們都會想到列舉陣列中所有的子陣列的和。我們都知道乙個長度為n的陣列,總共有n n 1 2個子陣列。計算出所有子陣列的和需要o n 2 時間。我們先來舉例分析...
求乙個無序陣列的最長連續遞增序列
給定乙個未經排序的整數陣列,找到最長且連續的的遞增序列。示例 1 輸入 1,3,5,4,7 輸出 3 解釋 最長連續遞增序列是 1,3,5 長度為3。儘管 1,3,5,7 也是公升序的子串行,但它不是連續的,因為5和7在原陣列裡被4隔開。示例 2 輸入 2,2,2,2,2 輸出 1 解釋 最長連續遞...