Leetcode--128. 最长连续序列
給定一個未排序的整數數組,找出最長連續序列的長度。
要求算法的時間復雜度為?O(n)。
示例:
輸入:?[100, 4, 200, 1, 3, 2]
輸出: 4
解釋: 最長連續序列是 [1, 2, 3, 4]。它的長度為 4。
思路:存入map中,每次以當前元素為序列的第一個數字,依次向下尋炸有沒有對應的元素
提交的代碼:
class?Solution?{
????public?int?longestConsecutive(int[]?nums)?{
????????if(nums.length==0)
????????{
????????????return?0;
????????}
????????Map<Integer,Integer>?map?=?new?HashMap<>();
????????int?i;
????????for(i=0;i<nums.length;i++)
????????{
????????????map.put(nums[i],?1);
????????}
????????int?sum=1,max=1,t;
????????for(i=0;i<nums.length;i++)
????????{
????????????if(!map.containsKey(nums[i]-1))
????????????{
????????????????t?=?nums[i];
????????????sum?=?1;
????????????while(map.containsKey(t+1))
????????????{
????????????????sum++;
????????????????t++;
????????????}
????????????}
????????????
????????????max?=?Math.max(max,?sum);
????????}
????????return?max;
????}
}
總結
以上是生活随笔為你收集整理的Leetcode--128. 最长连续序列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IntelliJ IDEA汉化版jar包
- 下一篇: 【剑指 offer】面试题13:机器人的