最长连续序列

❤本题不是很好想,具体思路我已经录制视频上传到抖音账号:王玥遥上了,需要自取❤ 

 

class Solution {
    public int longestConsecutive(int[] nums) {
        if(nums.length==0)  return 0;
		if(nums.length==1)   return 1;
		HashMap map = new HashMap<>();
		for(int num:nums){
			if(map.containsKey(num))
				continue;
			int left=map.get(num-1)!=null?map.get(num-1):0;
			int right = map.get(num+1)!=null?map.get(num+1):0;
			if(left>0&&right>0){
				map.put(num-left,left+right+1);
				map.put(num+right,left+right+1);
                map.put(num,1);
			}
            else if(left>0){
            	map.put(num-left,left+1);
            	map.put(num,left+1);
			}
            else if(right>0){
            	map.put(num+right,right+1);
            	map.put(num,right+1);
			}
            else{
            	map.put(num,1);
			}
		}
		int max=0;
		for(int value:map.values()){
			max=Math.max(max,value);
		}
		return max;
    }
}

 

你可能感兴趣的:(java,算法)