Skip to content
Related Articles

Related Articles

Improve Article

Moonfrog Labs Interview Experience | Set 3

  • Difficulty Level : Hard
  • Last Updated : 15 Nov, 2015

Q1. Given a sequence of integers, find the longest increasing subsequence. Example:
arr = [1, 2, 5, 3, 7]
ans : [1, 2, 5, 7] or [1, 2, 3, 7]

arr = [4, 3, 1, 2]
ans: [1, 2].

Solution:




import java.util.Arrays;
  
/** @author hiccup  */
class LIS
{
    static int[] maxLIS;
    static int[] result;
  
    public static void getLCS(int[] arr)
    {
        if (null == arr || 0 == arr.length)
            return;
  
        maxLIS = new int[arr.length];
        /* At least LCS is 1 i.e. element is the
                   only one in given sequence */
        Arrays.fill(maxLIS, 1);
  
  
        /**
         *
         */
        for (int curIdx = 1; curIdx < arr.length; curIdx++)
        {
            for (int beginIdx = 0; beginIdx <= curIdx - 1; beginIdx++)
            {
                if (arr[curIdx] > arr[beginIdx])
                {
                    if (maxLIS[curIdx] < maxLIS[beginIdx] + 1)
                    {
                        //System.out.print(arr[curIdx] + "  ");
                        maxLIS[curIdx] = maxLIS[beginIdx] + 1;
                    }
                }
            }
        }
  
        int max = maxLIS[0];
        result = new int[arr.length];
        Arrays.fill(result, -1);
  
        int cpIdx = 0;
        for (int idx = 0; idx < maxLIS.length; idx++)
        {
            /* Put sequence at cpIdx   */
            if (-1 == result[maxLIS[idx] - 1])
            {
                result[cpIdx++] = arr[idx];
            }
        }
  
        /*  Print sequence       */
        for (int idx = 0; idx < result.length; idx++)
        {
            System.out.print(result[idx] + " ");
        }
    }
  
    public static void main(String[] args)
    {
        int[] arr = {1, 2, 5, 3, 7};
        LIS.getLCS(arr);
    }
}

[1, 2, 3, 3, 4]

—————————————————————————————————————————————–
Q2. Given a vectors of numbers of fixed length, for example:



v1 = [4, 3, 1, 2] v2 = [2, 4, 3, 5]

The relationship nested between two vectors is defined as follows:

if the corresponding entries of a vector are all smaller than the other vector, after rearranging entries of vector if needed, then first vector
is said to be nested in the other. Example

Not nested
v1 – [4, 3, 1, 2] v2 – [2, 4, 3, 5]
v2 – [2, 4, 3, 5] v1 – [4, 3, 1, 2]

After re-arranging:

Nested
v1 – [4, 3, 1, 2]
v2 – [5, 4, 2, 3]

Hence v1 is nested in v2.

Given a pair of such vectors , write a function as follows:



function isNested(Vec a, Vec b);

Result:
-1 if a is nested in b
1 if b is nested in a
0 if nesting is not possible.

———————————————————————————————————————-

Q3. Given a list of numbers in random order. Is it possible to pair all elements in the list in such a way that no two pairs share an element
and the sum of elements in a pair is divisible by 101. Example:

v1 [ 1, 100, 1]
Ans: No

v2 [1, 100, 100, 1] [2, 98, 101, 1]
Ans: Yes

v3 [1, 200, 100, 100, 2, 1]
Ans: yes

If you like GeeksforGeeks and would like to contribute, you can also write an article and mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more, please refer Complete Interview Preparation Course. In case you are prepared, test your skills using TCS, Wipro, AmazonGoogle and Microsoft Test Serieses.




My Personal Notes arrow_drop_up
Recommended Articles
Page :