1 Aralık 2019 Pazar

Common Element of Three Array in Java

Elimizde 3 tane array olsun ve bunlardaki ortak elemanlari bulmak isteyelim.

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