Index of first occurrence GFG

 package com.company;


public class FirstIndex {
// Index of first occurrence of an element
public static int first(int[] arr, int x){
int n = arr.length;
for(int i = 0; i < n; i++){
if(arr[i] == x){
return i;
}
}
return -1;
}
// efficient solution
public static int firstOccur(int[] arr, int x, int low, int high) {
int n = arr.length;
int mid = (low + high) / 2;
if (low > high) {
return -1;
}
if(arr[mid] == x){
if(mid == 0) {
return mid;
}
else if(arr[mid - 1] == x){
return firstOccur(arr, x, low, mid - 1);
}
else
return mid;
}
else if(arr[mid] > x){
return firstOccur(arr, x, low, mid - 1);
}
else{
return firstOccur(arr,x, mid +1, high);
}
}
//Efficient solution iterative approach
public static int find(int[] arr, int x) {
int n = arr.length;
int low = 0;
int high = n - 1;
while(low <= high){
int mid = (low + high) / 2;
if (arr[mid] == x) {
if(mid == 0 || arr[mid - 1] != x) {
return mid;
}
else{
high = mid - 1;
}
}
else if(arr[mid] > x){
high = mid - 1;
}
else{
low = mid + 1;
}
}
return -1;
}
public static void main(String[] args) {
int[] arr = {5,5,5};
System.out.println(find(arr, 5));
}
}

Comments