题解 |

最长的可整合子数组的长度

http://www.nowcoder.com/practice/677a21987e5d46f1a62cded9509a94f2

public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int n=Integer.parseInt(sc.nextLine().split(" ")[0]);
        int[] arr=new int[n];
        String[] s=sc.nextLine().split(" ");
        for(int i=0;i<n;i++){
            arr[i]=Integer.parseInt(s[i]);
        }
        if(arr.length==0) System.out.print(0);
        int len=0;
        int max=0;
        int min=0;
        //用于判断重复
        HashSet<Integer> set=new HashSet<>();
        for(int i=0;i<n;i++){
            max=Integer.MIN_VALUE;
            min=Integer.MAX_VALUE;
            //一个数组中如果没有重复元素,并且如果最大值减去最小值,再加1的结果等于元素个数,那么这个数组就是可整合数组
            for(int j=i;j<n;j++){
                if(set.contains(arr[j])) break; //去除重复值
                set.add(arr[j]);
                max=Math.max(max,arr[j]);
                min=Math.min(min,arr[j]);
                if(max-min==j-i){
                    len=Math.max(len,j-i+1);
                }
            }
            set.clear();
        }
        System.out.print(len);
    }

}
全部评论

相关推荐

10-24 13:36
门头沟学院 Java
Zzzzoooo:更新:今天下午有hr联系我去不去客户端,拒了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务