the first missing positive :找第乙個丟失的整數
方法1:從1開始尋找正整數result·,找到就把他交換到nums[i]:同時i回退到result+1,時間複雜度大於o(n) ac
class solution else
}return result;}};
方法2:對每乙個大於1的數nums[i],都把他放在nums[num[i]-1]上,最後遍歷 時間複雜度o(n),ac
class solution
int j=1;
for(j=1; j<=n; j++)
if(nums[j-1]!=j)
break;
return j;}};
解法3:int firstmissingpositive(int a, int n)
} for(int i=0; i題目:287. find the duplicate number
class solution
}else i=nums.size()-1;
}return 0;}};
題目:
longest consecutive sequence:
尋找給定陣列中的最長連續序列
解法1:先排序,在遍歷 時間複雜度o(nlogn)
有趣的是:題目要求時間複雜度o(n),但這種方法不但ac。而且時間上比93%的提交都快,相反下一種解法使用hash,時間複雜度理論上看起來o(n),
但卻只比10%的提交快。,所以,只有一種解釋,那就是這種看起來時間複雜度是o(n),實際上,當資料長度很大時,平均時間複雜度是大於o(nlogn)的
如下圖 12ms的是第一種解法,40毫秒的是第二種解法
}};解法2:使用hash 用空間換時間
class solution
int count = 0;
int max = 0;
for(int i = 0;i < num.size();i++)
int curdecrease = num[i] - 1;
while( hashtable.find(curdecrease) != hashtable.end() )
if(count > max)
max = count;
}return max;}};
leetcode128 最長連續序列
給定乙個未排序的整數陣列,找出最長連續序列的長度。要求演算法的時間複雜度為 o n 示例 輸入 100,4,200,1,3,2 輸出 4 解釋 最長連續序列是 1,2,3,4 它的長度為 4。建立乙個dict,如果num不在裡面就檢視左右連續長度,再給num和左右處賦值 class solution...
Leetcode 128 最長連續序列
給定乙個未排序的整數陣列,找出最長連續序列的長度。要求演算法的時間複雜度為 o n 示例 輸入 100,4,200,1,3,2 輸出 4 解釋 最長連續序列是 1,2,3,4 它的長度為 4。複製 這道題目最開始大家想的肯定是sort,然後計數計算最長序列。但是要求時間複雜度為 o n 就不能用so...
LeetCode128 最長連續序列
原題目給定乙個未排序的整數陣列,找出最長連續序列的長度。要求演算法的時間複雜度為 o n 示例 輸入 100,4,200,1,3,2 輸出 4 解釋 最長連續序列是 1,2,3,4 它的長度為 4。題目分析 方法一 排序直接查詢法 先對陣列進行快排,然後從開始開始比較前後兩者是否相差1,相差1則計數...