数组中的最长连续序列

来源:互联网 发布:php socket可以做什么 编辑:程序博客网 时间:2024/05/22 03:04

import java.util.*;//数组中的最长连续序列public class LongestSequence{//最长的连续序列   public static int longestConsecutive(int[]arr)   {   if(arr==null||arr.length==0)   {   return 0;   }   int max=1;   //key 表示遍历的某个数  value表示最长连续序列的长度   HashMap<Integer,Integer>map=new  HashMap<Integer,Integer>();   for(int i=0;i<arr.length;i++)   {   if(!map.containsKey(arr[i]))   {   map.put(arr[i],1);   if(map.containsKey(arr[i]-1))   {   max=Math.max(max,merge(map,arr[i]-1,arr[i]));   }   }   if(map.containsKey(arr[i]+1))   {   max=Math.max(max,merge(map,arr[i],arr[i]+1));   }   }   return max;   }   //左右位置的长度合并   public static int merge(HashMap<Integer,Integer>map,int less,int more)   {   int left=less-map.get(less)+1;   int right=more+map.get(more)-1;   int len=right-left+1;    map.put(left,len);    map.put(right,len);    return len;   }   public static void main(String[]args)   {   int arr[]={100,4,200,1,3,2};    System.out.println(longestConsecutive(arr));   }}


原创粉丝点击