Учитывая два массива целых чисел, a и b, попробуйте создать арифметическую последовательность, добавив целые числа из b в a. Вернуть максимальную длину a или -1, если не существует арифметической последовательности, например, a = [2, 4, 8], b = [1, 6, 10, 12] -> a = [2, 4, 6,8, 10, 12] -> return 6
Я пытался создать новый массив и объединить a и b и подсчитать самую длинную подпоследовательность, но счетчик мог удалить элементы из a, к которым не следует прикасаться
static int maxSeq(int[] arr1, int[] arr2){
if(arr1.length ==0)return 0;
int n =arr1.length, m = arr2.length;
int[] arr = new int[n+m];
System.arraycopy(arr1,0,arr,0,n);
System.arraycopy(arr2,0,arr,n,m);
Arrays.sort(arr);
int result =0;
Map<Integer,Integer>[]d = new HashMap[n+m];
for(int i =0; i < arr.length;i++){
d[i] = new HashMap<Integer, Integer>();
}
for(int i =1; i < arr.length; ++i){
for(int j = 0; j<i;++j ){
int diff = arr[i]-arr[j];
int len =2;
if(d[j].containsKey(diff)){
len = d[j].get(diff) +1;
}
d[i].put(diff,len);
result = Math.max(result,d[i].get(diff));
}
}
return result;
}
a = [2, 4, 8], b = [1, 6, 10, 12] -> a = [2, 4, 6, 8, 10, 12] -> return 6 int []a = {5,7,13,14}, b = {9,11,15};возврат -1 не 6