Dutch national flag problem in Javascript

Image
Dutch national flag problem and solution in Javascript Problem statement:   The Dutch national flag (DNF) problem is one of the most popular programming problems proposed by Edsger Dijkstra. The flag of the Netherlands consists of three colors: white, red, and blue. The task is to randomly arrange balls of white, red, and blue such that balls of the same color are placed together. Now, let's consider an array with 3 distinct values say 0, 1 and 2. We won't be using any sort method and we need to sort this array in 0(n). Input Array :  let   arr  = [ 0 ,  2 ,  1 ,  0 ,  1 ,  2 ,  0 ,  2 ]; Expected Output: [ 0, 0, 0, 1, 1, 2, 2, 2 ] Solution Approach : When we see expected output, we can clearly see that sorted array is divided into 3 sections having values 0 , 1 and 2. So, let's divide the array in 3 sections: a) from 0th index to left boundary b) from left boundary to right boundary c) from right boundary to last index. Now we will create 2 pointers : left (starting from 0

Micro and Array Update : Hackerearth Problem and Solution

Micro and Array Update : Problem
Micro purchased an array $$A$$ having $$N$$ integer values. After playing it for a while, he got bored of it and decided to update value of its element. In one second he can increase value of each array element by $$1$$. He wants each array element's value to become greater than or equal to $$K$$. Please help Micro to find out the minimum amount of time it will take, for him to do so.
Input:
First line consists of a single integer, $$T$$, denoting the number of test cases.
First line of each test case consists of two space separated integers denoting $$N$$ and $$K$$.
Second line of each test case consists of $$N$$ space separated integers denoting the array $$A$$.
Output:
For each test case, print the minimum time in which all array elements will become greater than or equal to $$K$$. Print a new line after each test case.

SAMPLE INPUT
2
3 4
1 2 5
3 2
2 5 5
SAMPLE OUTPUT
3
0
Explanation
For first test case,
After $$1$$ second, array will be $$\{ 2, 3, 6\}$$
After $$2$$ second, array will be $$\{ 3, 4, 7\}$$
After $$3$$ second, array will be $$\{ 4, 5, 8\}$$
So it will take $$3$$ second for all array elements to become greater than or equal to $$4$$

Solution in java
  1. import java.util.*;
  2.  
  3. class TestClass {
  4. public static void main(String args[] ) throws Exception {
  5. /*
  6. * Read input from stdin and provide input before running
  7. * Use either of these methods for input
  8.  
  9. //BufferedReader
  10. BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  11. String line = br.readLine();
  12. int N = Integer.parseInt(line);
  13. */
  14. //Scanner
  15. Scanner sc = new Scanner(System.in);
  16. int t = sc.nextInt();
  17.  
  18. for (int i = 0; i < t; i++) {
  19. int n= sc.nextInt();
  20. int k = sc.nextInt();
  21. int arr[] = new int[n];
  22. for(int j=0; j<n;j++){
  23. arr[j]=sc.nextInt();
  24. }
  25. int min=arr[0];
  26. for(int j=0;j<n;j++ ){
  27. if(min>arr[j]){
  28. min=arr[j];
  29. }
  30. }
  31. if(min<k)
  32. System.out.println(k-min);
  33. else
  34. System.out.println(0);
  35. }
  36. }
  37. }

Comments

  1. Will you please elaborate the question and solution?

    ReplyDelete

Post a Comment

Popular posts from this blog

Ice Cream Parlor : Hackerrank Problem and Solution

Javascript Problem: Find the next perfect square!!

Disemvowel Trolls || Codewars problem and solution in Javascript || Topic : Strings and RegEx