E.g. if array is // [ a, c, d, h, k, l, l, l, o, u, x, z ]
//if given m -> o
// if given k -> l
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
// your code goes here
System.out.println(search(new char[]{'b', 'c', 'd', 'h', 'k', 'l', 'l', 'l', 'o', 'u', 'x', 'z'},'b')) ;
}
static char search(char a[],char find)
{
if(a==null || a.length==0)
return ' ';// if nothing found
int start=0;
int end=a.length-1;
if(start>end) return ' ' ; //|| find>=a[end]) return ' ';
if(find <a[start]) return a[start];
if(start==end && a[start]>find)
return a[start];
while(start<end)
{
int mid=start+(end-start+1)/2; //to minimize over flow
if(mid+1<=end && find>=a[mid] && find <a[mid+1])
return a[mid+1];
else if(mid-1>=0 && find < a[mid] && find >= a[mid-1])
return a[mid];
else if(find >=a[mid])
start=mid;
else if( find <a[mid])
end=mid;
else
return ' ';
System.out.println("start= " + start + ":::" + " End= " + end);
}
return ' ';//if nothing found , return special character
}
}
Time Complexity O(logn)
Space Complexity O(1)
//if given m -> o
// if given k -> l
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
// your code goes here
System.out.println(search(new char[]{'b', 'c', 'd', 'h', 'k', 'l', 'l', 'l', 'o', 'u', 'x', 'z'},'b')) ;
}
static char search(char a[],char find)
{
if(a==null || a.length==0)
return ' ';// if nothing found
int start=0;
int end=a.length-1;
if(start>end) return ' ' ; //|| find>=a[end]) return ' ';
if(find <a[start]) return a[start];
if(start==end && a[start]>find)
return a[start];
while(start<end)
{
int mid=start+(end-start+1)/2; //to minimize over flow
if(mid+1<=end && find>=a[mid] && find <a[mid+1])
return a[mid+1];
else if(mid-1>=0 && find < a[mid] && find >= a[mid-1])
return a[mid];
else if(find >=a[mid])
start=mid;
else if( find <a[mid])
end=mid;
else
return ' ';
System.out.println("start= " + start + ":::" + " End= " + end);
}
return ' ';//if nothing found , return special character
}
}
Time Complexity O(logn)
Space Complexity O(1)