class Solution { public: // Using Recursion /* int fistOccurence(int arr[],int n , int k, int i) { if(i==n) { return -1; } if(arr[i]==k){ return i; } return fistOccurence(arr,n , k, i+1); } int LastOccurence(int arr[],int n, int k, int j) { if(j==n){ return -1; } int ab=LastOccurence(arr,n,k,j +1); if(ab!=-1){ return ab; } if(arr[j]==k){ return j; } return -1; } vector find(int arr[], int n , int x ) { int first=fistOccurence(arr, n , x, 0); int last=LastOccurence(arr, n, x, 0); vectorvt; vt.push_back(first); vt.push_back(last); return vt; }*/ // NOW USING BINARY SEARCH /* int fistOccrence(int arr[], int n, int k) { int s = 0; int e = n - 1; int ans = -1; while (s <= e) { int mid = s + (e - s) / 2; if (arr[mid] == k) { ans = mid; e = mid - 1; } else if (k > arr[mid]) { s = mid + 1; } else if (k < arr[mid]) { e = mid - 1; } } return ans; } int LastOccrence(int arr[], int n, int k) { int s = 0; int e = n - 1; int ans = -1; while (s <= e) { int mid = s + (e - s) / 2; if (arr[mid] == k) { ans = mid; s = mid + 1; } else if (k > arr[mid]) { s = mid + 1; } else if (k < arr[mid]) { e = mid - 1; } } return ans; } */ // Through Foor LOOP int fistOccrence(int arr[], int n, int k) { int f = -1; for (int i = 0; i < n; i++) { if (arr[i] == k) { f = i; return f; } } return f; } int LastOccrence(int arr[], int n, int k) { int f = -1; for (int i = 0; i < n; i++) { if (arr[i] == k) { f = i; } } return f; } vector find(int arr[], int n , int x ) { int first=fistOccrence(arr, n , x); int last=LastOccrence(arr, n, x); vectorvt; vt.push_back(first); vt.push_back(last); return vt; } };
0 Comments