举个例子:,[5,3,4,6,2]排序之后为[2,3,4,5,6],符合每相邻两个数差的绝对值都为1,所以这个数组为可整合数组;得出的结论为 最长的可整合子数组的长度:a、子数组无重复值;b、子数组里面的符合最大值-最小值+1=子数组的长度。
public test(arr[]){
int Max = 0;
int Min=0;
int len = 0;
HashSet<Integer> set = new HashSet<Integer>();
for(int i=0;i<arr.length;i++){
max = Integer.MAX_VALUE;
min = Integer.MIN_VALUE;
for(int j=i;j<arr.length;j++){
if(set.contains(arr[j])){
break;
}
set.add[j];
Max = Math.max(max,arr[j])
Min =Math.min(min,arr[j]);
if(max-min+1=j-i)
{
len = Math.max(len,j-i+1);
}
}
}
set.clear();
return len;
}
举个例子 k=5 arr[]={1,3,2,2,1,5}; 最长的len=3
代码如下:
注意map.put(0,-1);