Sorted Subsequence Java
- Get link
- X
- Other Apps
PROGRAM TO FIND SORTED SUBSEQUENCE OF SIZE 3 IN LINEAR TIME
import java.io.*;class SortedSubsequence { // A function to find a sorted // sub-sequence of size 3 static void find3Numbers(int arr[]) { int n = arr.length; // Index of maximum element // from right side int max = n - 1; // Index of minimum element // from left side int min = 0; int i; // Create an array that will store // index of a smaller element on left side. // If there is no smaller element on left // side, then smaller[i] will be -1. int[] smaller = new int[n]; // first entry will always be -1 smaller[0] = -1; for (i = 1; i < n; i++) { if (arr[i] <= arr[min]) { min = i; smaller[i] = -1; } else smaller[i] = min; } // Create another array that will // store index of a greater element // on right side. If there is no greater // element on right side, then greater[i] // will be -1. int[] greater = new int[n]; // last entry will always be -1 greater[n - 1] = -1; for (i = n - 2; i >= 0; i--) { if (arr[i] >= arr[max]) { max = i; greater[i] = -1; } else greater[i] = max; } // Now find a number which has // both greater number on right // side and smaller number on left side for (i = 0; i < n; i++) { if ( smaller[i] != -1 && greater[i] != -1) { System.out.print( arr[smaller[i]] + " " + arr[i] + " " + arr[greater[i]]); return; } } // If we reach number, then there // are no such 3 numbers System.out.println("No such triplet found"); return; } public static void main(String[] args) { int arr[] = { 12, 11, 10, 5, 6, 2, 30 }; find3Numbers(arr); }}
OUTPUT
5 6 30
- Get link
- X
- Other Apps
Comments
Post a Comment