Given input integer array arr and integer num, find and return all integers present in arr that are greater than and lesser than num.
| Input Parameters |
Expected outputs |
intArray1 = {2,8, 12, 15, 1, 4, 6, 17, 26, 7, 45, 27};
Find numbers greater and lesser than: 11
|
Greater numbers : 12,15,17,26,27,45
Lesser numbers : 1,2,4,6,7,8
|
intArray1 = {34, 2, 33, 77, 45, 88 };
Find numbers greater and lesser than: 1
|
Greater numbers : 2,33,34,45,77,88
No numbers lesser than 1 are present.
|
intArray1 = {77, 99 ,123, 283, 66};
Find numbers greater and lesser than: 550
|
No numbers greater than 550 are present.
Lesser numbers : 66,77,99,123,283
|
| The java method should accept following input parameters: arr (int array), num (int).
|
| Initialize a variable tset of type TreeSet to hold the input elements.
|
| Using a for loop iterate through arr, using idx as a loop variable with initial value 0 and increment idx till it reaches arr1.length-1:
Add arr1[idx] to set1.
|
| Initialize variable greater of type TreeSet and set is value to tSet.tailSet(num), this will add all numbers greater than num in tset to greater.
|
| Initialize variable lesser of type TreeSet and set is value to tSet.headSet(num), this will add all numbers lesser than num in tset to greater.
|
| Initialize a 2-dimensional int array retVal with 2 rows.
|
| Use an iterator to access elements from greater and add the same to int array retVal[0]. Use another iterator to access elements from lesser and add the same to int array retVal[1]. Return retVal.
|
Below fully running code can be copied and run on Eclipse or other Java IDEs. Refer the classname in code below. If the class name below is "A", save the code below to a file named A.java before running it.
Be sure to try your own test cases to enhance your understanding !
You can also tweak the code to optimize or add enhancements and custom features.
import java.util.Iterator;
import java.util.TreeSet;
public class SetFindNumbers {
public int[][] setFindNumbers(int[] arr, int num) {
TreeSet<Integer> tset=new TreeSet<Integer>();
for (int idx=0; idx < arr.length; idx++) {
tset.add(arr[idx]);
}
TreeSet<Integer> greater=(TreeSet<Integer>) tset.tailSet(num);
TreeSet<Integer> lesser=(TreeSet<Integer>) tset.headSet(num);
int[][] retArr=new int[2][];
retArr[0]=new int[greater.size()];
int idx=0;
Iterator itr=greater.iterator();
while (itr.hasNext()) {
retArr[0][idx]=((Integer)itr.next()).intValue();
idx++;
}
retArr[1]=new int[lesser.size()];
idx=0;
itr=lesser.iterator();
while (itr.hasNext()) {
retArr[1][idx]=((Integer)itr.next()).intValue();
idx++;
}
return retArr;
}
public static void main(String[] args) {
SetFindNumbers sp=new SetFindNumbers();
int[][] retVal;
try {
int[] intArray1 = {2,8, 12, 15, 1, 4, 6, 17, 26, 7, 45, 27};
printArraySummary(intArray1, "Original Array");
System.out.println("Find numbers greater and lesser than: "+11);
retVal=sp.setFindNumbers(intArray1, 11);
printArraySummary(retVal[0], "Greater numbers");
printArraySummary(retVal[1], "Lesser numbers");
int[] intArray2 = {34, 2, 33, 77, 45, 88 };
printArraySummary(intArray2, "Original Array");
System.out.println("Find numbers greater and lesser than: "+1);
retVal=sp.setFindNumbers(intArray2, 1);
printArraySummary(retVal[0], "Greater numbers");
printArraySummary(retVal[1], "Lesser numbers");
int[] intArray3 = {77, 99 ,123, 283, 66};
printArraySummary(intArray3, "Original Array");
System.out.println("Find numbers greater and lesser than: "+55);
retVal=sp.setFindNumbers(intArray3, 550);
printArraySummary(retVal[0], "Greater numbers");
printArraySummary(retVal[1], "Lesser numbers");
}catch (Exception exception) {
System.out.print("Exception,"+ exception);
exception.printStackTrace();
}
}
public static void printArraySummary(int[] intArray, String label) throws Exception {
// Case 1: The input Array is null !!
if (intArray == null) { System.out.println("\n\n Input Array was null !! \n"); return; }
// Case 2: Print input Array by index (first to last)
System.out.println();
System.out.println("************************************************************************");
System.out.print(label+" : ");
int arrayIndex=0;
for (arrayIndex=0; arrayIndex< intArray.length; arrayIndex++) {
System.out.print(intArray[arrayIndex]);
if (arrayIndex< intArray.length-1) {System.out.print(",");}
}
System.out.println();
System.out.println("*************************************************************************");
System.out.println();
Thread.sleep(2000);
return;
}
}