Input
arr1 = [2, 6, 9, 11, 13, 17]
arr2 = [3, 6, 7, 10, 13, 18]
arr3 = [4, 5, 6, 9, 11, 13]
Output: [6, 13]
Burda izleyecegimiz yol soyle olmali:
x: arr1 in o anki elemani
y: arr2 nin o anki elemani
z: arr3 un o anki elemani
x,y ve z esit mi diye kontrol edecegiz. esitlerse arraya o anki elemani eklicez. ve herbirini 1 arttircaz
eger x, yden kucukse xi bir sonraki elemana atayacagiz.
y, zden kucukse y yi bir sonraki elemana atayacagiz
hic biri degilse zyi bir sonraki elemana atayacagiz
import java.util.ArrayList;
import java.util.List;
public class FindIntersection {
public static List<Integer> intersection(int[] arr1, int[] arr2, int[] arr3) {
List<Integer> commonElements = new ArrayList<Integer>();
int x = 0, y = 0, z = 0;
while (x < arr1.length && y < arr1.length && z < arr1.length) {
if (arr1[x] == arr2[y] && arr1[x] == arr3[z]) {
commonElements.add(arr1[x]);
x++;
y++;
z++;
} else {
if (arr1[x] < arr2[y]) {
x++;
} else if (arr2[y] < arr3[z]) {
y++;
} else {
z++;
}
}
}
return commonElements;
}
public static void main(String[] args) {
int arr1[] = new int[] { 2, 6, 9, 11, 13, 17 };
int arr2[] = new int[] { 3, 6, 7, 10, 13, 18 };
int arr3[] = new int[] { 4, 5, 6, 9, 11, 13 };
System.out.println(intersection(arr1, arr2, arr3));
}
}
Hiç yorum yok:
Yorum Gönder