Objective In this challenge, we're going to use loops to help us do some simple math. Task Given an integer, , print its first multiples. Each multiple (where ) should be printed on a new line in the form: N x i = result . Input Format A single integer, . Constraints Output Format Print lines of output; each line (where ) contains the of in the form: N x i = result . Sample Input 2 Sample Output 2 x 1 = 2 2 x 2 = 4 2 x 3 = 6 2 x 4 = 8 2 x 5 = 10 2 x 6 = 12 2 x 7 = 14 2 x 8 = 16 2 x 9 = 18 2 x 10 = 20 Explanation: Here, we just need to use for loops to achieve the result Solution : import java.io.* ; import java.math.* ; import java.security.* ; import java.text.* ; import java.util.* ; import java.util.concurrent.* ; import java.util.regex.* ; public class Solution { public static void main ( String [] args ) throws IOException { BufferedReader bufferedReader = new BufferedReader ( new InputStreamReader ( Syste
Given an array, print the Next Greater Element (NGE) for every element. The Next greater Element for an element x is the first greater element on the right side of x in the array. Elements for which no greater element exist, consider the next greater element as -1.
eg: input=[11,4,3,2,10,12]
ouput : 12 ,10,10,10,12,-1
EXPLANATION:
- Find the first next greater element for each element.
- If the element have no greater element replace the element with -1
APPROACH:
Using Stack.
Logic:
- Create one stack for storing the index of the array elements
- using for loop iterate over each element.
- compare variable to store the next greater element
- If the element you are iterating is lesser than the compare element, then push into the stack.
- If the element you are iterating is greater than the compare element pop the index from stack then replace the index position of output array with the greater element.
- Repeat this while loop until it is not greater than compare variable.
- After iterating through for loop there is no element more to compare and push.
- Then remove the remaining indexes from stack and replace the corresponding position in output array with -1.
Program :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | import java.util.*; import java.io.*; public class MyClass { public static void main(String args[]) { int input[] = {10,7,4,2,9,10,11,3,2}; int output[]=new int[input.length]; int compare=Integer.MAX_VALUE; Stack<Integer> stack = new Stack<Integer>(); for(int i=0;i<input.length;i++) { if(input[i]<compare) { stack.push(i); // compare=input[stack.peek()]; } else { while(compare<input[i] && !stack.isEmpty()) { int index=stack.pop(); output[index]=input[i]; if(!stack.isEmpty()){ compare=input[stack.peek()]; } } stack.push(i); } compare=input[stack.peek()]; } while(!stack.isEmpty()) { output[stack.pop()]=-1; } for(int i:output) { System.out.println(i); } System.out.println("End"); } } |
Check my other posts too....
Comments
Post a Comment