algorithms q.pdf

Upload: dhananjayan89

Post on 30-May-2018

226 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/9/2019 Algorithms Q.pdf

    1/6

    Strings

    Finding an anagram[a word that is a permutation of the given word] of a word from a set ofwords. -- Sort given words individually and then do the matching.. you may sort these sorted

    words overall.

    Given 2 strings of different lengths(suppose N and M). Find the maximum common substring.

    Complexity?

    In previous problem, instead of 2 strings we are given a set of strings each with different

    lengths. What is the complexity?

    Given a string of length N, find whether there exits an even length palindrome substring. Find the first non-repeating character in a string:("ABCA" -> B ).

    Find if a string is a substring of other in linear time......solution(KMP).

    Given two strings S1 and S2, Find whether a string S3 is formed by interleaving S1 and S2.

    Anagram of a string is defined as any string which is formed by jumbling the letters from thatstring. e.g. anagrams of abc are bac, bca etc. Given a dictionary of words, find all anagrams

    of a given query word. Once I came up with an algo, I was asked to determine and optimize the

    worst-case running time. Assume I can preprocess the dictionary and that this preprocessing catake infinite time. Only algo, no coding.

    The second algo I came up with is to have a hashtable that maps the sorted version of a stringto a set of anagrams.

    Generate all strings of length n which do not contain a given string as a substring.

    String matching: Find if a string is a substring of another. Note that a mismatch of one characte

    should be ignored. A mismatch is either an extra character (dog matches xxxdoogyyyy), a

    missing char (dog matches xxxxdgyyyy) or a different character (dog matches xxxdigyyyy)Write code in a language of your choice.

    Array

    Given a array of integers of size N and an integer k right rotate array k times. O(n) time. -

    Solution in Programming Pearls Given an array of size n wherein elements keep on increasing monotically upto a certain locatio

    after which they keep on decreasing monotically, then again keep on increasing, then decreasinagain and so on. Sort the array in place (ie. using only O(1) extra memory).

    Given an array of size n, design an algorithm to find for each entry of the array the first numbeto the right which is less than it. That is, for each entry A. This has to be done in O(n) time.

    Given two sorted positive integer arrays A(n) and B(n), we define a set S = {(a,b) | a \in A andb \in B}. Obviously there are n2 elements in S. The value of such a pair is defined as Val(a,b) =

    a + b. Now we want to get the n pairs from S with largest values. The tricky part is that we neean O(n) algorithm. --> Possible

    Partitioning a given integer n into unique partitions of size m. like if n=10,m=4, 7111 is onesuch partition. Give all such partitions

    You are given an array. One integer is in the array twice and others are unique. Find that no.

    O(n) Solution Given an array t[100] which contains numbers between 1 and 99. Return the duplicated value.

    Try both O(n) and O(n^2)

    Given 2 arrays of arbitrary sizes N and M each. Write a program for finding mutual exclusion ofthese two arrays.(copy the non-common elements into another array). -- Hash after finding min

    and max range.. or straight O((m+n)logm) algorithm.

    Unsorted array - Find i,j such that a[i]+a[j] is max. - O(n lgn ) algo -- better? -- find max and

    second max -- O(n).

    Find a saddle point in matrix :A saddle point is an element of the matrix which is both the

    smallest element in its row and the largest element in its column.

    Given an array of size N and a Random no. generator function that can generate numbers inrange 0...N-1. You need to fill array with values between 0 and N-1(no duplicates) and there

    should not be any pattern between values stored. Also there should not be any relation betwee

  • 8/9/2019 Algorithms Q.pdf

    2/6

    value and the index at which value is stored. Extra memory should not be used. O(n) solution.

    How the program will change if the array of 2N elements has to be filled and no value shouldrepeat more than twice.

    An array A of size n is given.Another array B needs to be created of size k which is defined as

    B[ i ]= A[ i + 0 ] + A[i+1] +... +A[n-k+i];Constraints:

    1) addition of two elements A[j] and A[k] is expensive, so try to minimize the number ofadditions.

    2) Subtract operation on A[j] and A[k] elements is not allowed.

    Find the time complexity to create array B and the number of additions in order of n for thecreation ?

    Answer:This problem seems like you create a window of size n-k and then slide it over the elements of

    to produce B.

    Now assuming n>>k, you will have a lot of common elements that the window will cover. Forexample, if n=100 and k=10, A[10]...A[90] will be present in all elements of B.

    Hence, you need to sum A[k]...A[n-k] just once... and then for each element in B you will add kmore elements of to the above sum. This will reduce the add operations from k*(n-k) to (n-k) +

    k*k. Now this will only be a gain if n-k>k ie. n>>k Given an array of N elements( consider distinct ) we have only one operation defined ie

    reverse(i,j) which reverses all the elements at positions at i and j. so using the array given and

    the operation we have to generate all the n! permutations and there is a constraint that only onreverse operation is to be used between 2 permutations Arrays of integers, a(i,j) with the following property. For all pairs of distinct rows i1,i2 and

    distinct columns j1,j2 the diagonal sum a(i1,j1)+a(i2,j2) and the anti-diagonal suma(i1,j2)+a(i2,j1) are unequal. We are interested in finding such arrays with the entries chosen

    from as narrow a range of integers as possible. For example the following is an example of suca 3x3 array with entries chosen from {0,1}

    0 0 10 1 0

    1 0 0Find a 5x5 array with this property with entries chosen from {0,1,2}. If this is too easy try to

    find a 7x7 array with entries from {0,1,2,3,4}, a 11x11 array with entries from {0,1,...,6,7} ana 13x13 arrays with entries from {0,1,...,7,8}. This will probably require computer assistance.

    Given 2 sorted arrays, compute the combined median in O(lg n) time. Given sorted array and an integer C, find 2 elements a[i] and a[j] such that their difference is C

    -- O(m)

    WAP : Given a 2d array. Print the sequence you get if you unroll it from top-left elementanticlockwise.

    Given a sorted array which is rotated left by some amount, find its smallest element in log n

    time. e.g. 6 9 10 15 1 3 5 (Sorted array is rotated left by 3 numbers) Search an element in sucan array.

    Linked List

    Cycle in linked list - two problems - (i) detect cycle (ii) Detect the intersection point andmathematical proof. -- Standard Answer

    Given a linked list of integers, delete all occurrences of the elements which are repeated. O(n)

    solution. One approach: Hash table implementation. -- sort and remove -> O(nlgn) wihtout extspace

    you are given 2 linked lists - A and B. write a function which gives you the intersection of A & BA-B and B-A. try to reuse the nodes.

    Merge two linked lists, one which is sorted in ascending order and one which is sorted indescending order.

    Switch pairs of nodes in a linked list.

  • 8/9/2019 Algorithms Q.pdf

    3/6

    Stack & Queues

    Implement insert and delete operations of queue using stacks.

    Program to reverse a stack in place using recursion ? You can only use the following ADT

    functions on Stack: IsEmpty IsFull Push Pop Top

    Tree

    Merge two BSTs

    A binary search tree is given and a pointer to a node X is given. Find the immediate successor o

    X.num, i.e. the inorder successor.

    Given a n-tree whose definition is as - the tree has total n nodes and any node can have anynumber of children. Give an array representation, to represent the tree. so that the tree can be

    easily constructed from the array. The order of child in reconstruction is not important. i.e.following trees are same. Then from the array find the height of the tree. -- If stored as heap, i

    will require 2^(h-1) sized array and height computation is log size of array to base n. And ...

    Given a pointer to a node in a binary tree, write a func to return its successor in inorder

    traversal.

    A strict k-ary tree is a tree where each node has either 0 or k children. Assume there is no info

    in the nodes; were interested only in the tree structure. A DFS search (think preorder traversaof such a tree generates a string where each node is represented by the letter l for a leaf and

    p otherwise. For instance, for k=3, plpllll represents the following tree:

    p

    |

    --+--

    | | |

    l p l

    |

    --+--

    | | |

    l l l

    In a binary tree, you can think of nodes as balls or weights and the edges as strings. Then the

    tree is a structure suspended from the root. You want to suspend it from a particular leaf. If tha

    node were made the root, how does the structure of the tree change? (Some parent-childrelationships get inverted.) First describe the logic and then write code to implement this.

    Graphs

    find number of cycles in a directed graph. Complexity? -- O(n^3) Algo with recursion. For eachnode calculate the no of cycles it is part of. Then remove this node from graph and do it for

    other nodes as well. Given a graph of nodes of the type struct node { int ID; struct node ** refList; int size; };

    Detect all the cycles in it. output should of the following form: Cycle detected : In reference fromnode 2 to 7 Cycle detected : In reference from node 5 to 7 -- Recursive, backtracking solution

    with removing each node once all the cycles starting-terminating at that node are detected. --O(n^3) Solution.

    Given a weighted directed graph G={V,E}. The goal is to obtain its spanning forest withmaximum sum of weights of edges. The direction of each edge is from root to leave. Is this

    problem NP-Hard?

  • 8/9/2019 Algorithms Q.pdf

    4/6

    Find longest cycle in a graph? Is it NP-Complete?

    Given a connected graph G, prove that there are always 2 nodes with same degree. -- Proof bycontradiction and pigeon hole principle.

    Given a DAG , how will you find number of paths from a node u to node v. Ans...(Start from allnodes from where there is a direct edge to v, update their couts. Then follow a procedure simila

    to topological sort in reverse direction until node u is labelled)

    Others

    In a document, find the 10 elements with max frequency in a given document -- Top K Methods

    Given four points write a program for finding whether the points form a square or not. -- Angles

    Sides, diagonal three aspects of looking at it.

    What is the most efficient way to compute the intersecting area of 2 rectangles? -- Sides paralle

    to axes : Assumed

    Given N sets of integers (Assume suitable representation), Device an algorithm to print the crosproduct of N sets, N known atruntime . complexity? Assuming m to be the size of each set. An

    assuming that all the m elements are present. We will generate bit pattern for base m systemand depeding on each bit, select the values from sets. If this assumption is unreasonable, then

    recursive algorithm to do this has to be devised. This will be similar to compute determinant of x N matrix.

    Implement a data structure for dictionary. So that the function which returns all the wordsending with a given string can be implemented efficiently.

    Generate First n primes -- Find all primes between 1 and n. You have given n boxes with hight, width and depth. But box can be rotated in any direction so

    the any dimension can be height or width or depth. Find the maximum number of boxes that cabe wrapped inside each others.

    struct box{ int d1,d2,d3;} There are n red and n blue balls. Each ball is given a unique number between 1-n. So that

    number and color is unique combination. And ith red balls index in the array is always less thancorresponding ith blue ball. struct ball {int num, char *color;};

    The distance between ith blue ball and ith red ball is called some xyz distance. Calculate sum o

    all these distances for the array.for eg. r1 r3 b1 r2 b3 b2

    Hence sum of those distances is : 2 + 3 + 2 = 7 Random # array of size n with no repeatation has to generated. Give a unbiased strategy.

    Given a circular road and a set of petrol pumps located at distances d1 d2 ... dn away from eacother and supplying p1 p2 p3 ... pn amounts of fuel. Given that your vehicle has a mileage of

    1km/l. Determine the feasibility of going around the path starting with zero fuel. Find a pointfrom which you can start and complete the cycle given that you have zero initial fuel.

    You are given a string CAT and a dictionary. You can substitute one character in the string at atime to get another string. This string should be a part of the dictionary. Using such steps, start

    from the source string and reach the destination string(DOG) in minimum number of steps. Whis the best way of storing the dictionary? Write the code for the same.

    Given a repository of 10 billion pages and each page has an average of 10 links, how will find it

    neighbors and neighbors of neighbors? Given a 2D space. There are some rectangles in this space with their sides aligned in the x and

    directions. These rectangles are like obstructions. Now find a path from a point s to a point t inthis space. Find the shortest path

    How to check if your system is Little Endian or big endian?

    Given an integer, find all compositions of the numbers considering order important.Compositionof 5 : 1+1+...+1, 1+1+1+2, 2+1+1+1 Modify it to Dont consider order important 1+1+2 is

    same as 1+2+1. Given a matrix of zeros and ones, find the largest submatrix consisting only of ones. Then

    determine the running time and bring it down. Just algo, no coding. Given a sequence of numbers, find the biggest increasing subsequence (not necessarily

    contigous). Do asymptotic analysis and improve the algo. Just algo, no coding. Google is looking at phone interfaces, where you type a word by entering some numbers on the

  • 8/9/2019 Algorithms Q.pdf

    5/6

    keypad. Given a number and a dictionary of words, generate a list of matches. First describe th

    idea and then code it. Then determine the running time and improve it. Now assume youreallowed to preprocess the dict and you have infinite time for that. Reduce the lookup time. The

    interviewer said hed be very happy if I can code it. Determine the time-space tradeoff howmuch more space do you use? whats the improvement in the running time?

    Answer: Write a function that takes a string of digits that have been assigned letters and a

    string of digits that havent; take the first digit from the second string, assign a character to it,and recurse. Stop recursion when the first argument is not in the dict.

    Second algo: build a lookup table that maps a number to a set of strings.

    Find Lucky Number: From the sequence: 1 2 3 4 5 6 7 8 9 ...

    If you remove every second element you will get 1 3 5 7 9 11 13 ...

    Then from this sequence if you remove every third element you will get 1 3 7

    13 ...

    The process continues...

    The number is considered to be lucky if the number stays in the sequence

    indefinitely.

    Write a function with signature: bool isLucky(int n) which returns true or

    falsewhether the number is lucky or not.

    Algorithm: Explain algorithm to shuffle cards

    search a number in NxN matrix (sorted rows and colomns wise) Ans O(n) compare numberwith corner elements.

    Puzzles

    For numbers between 1 and 100, how many numbers have odd numbers of factors. Note that

    factors covers all prime and composite factors and including the number itself and 1. -- Theanswer will be perfect squares.

    You are facing a wall that stretches infinitely in both directions. There is a door in the wall, but

    you know neither how far away nor in which direction. You can see the door only when you areright next to it. Design an algorithm that enables you to reach the door by walking at most O(n

    steps where n is the (unknown to you) number of steps between your initial position and thedoor

    There is a camel and a person with 3000 bananas, He needs to take the bananas to a market1000km away. The constraints are for every 1km the camel eats 1 banana or else doesnt move

    At a time, it can carry max of 1000 bananas only. How many bananas can he take to other end

    You are given a number. It has some number of ones in its binary form. Get the next higher

    number which has the same number of ones in its binary form.

    A king has n bottles of wine of which one is poisoned. He intends to find out by having a bunch

    of prisoners taste wine from different bottles even a little poisoned wine will kill. There will beonly one tasting session you cant say, feed wine from bottle x to prisoner y and if he doesn

    die, do... What are the least number of prisoners required, and who samples wine from which

    bottle?

    51, 46, 22, 18, 10, ????

    Probability

    A biased coin has a probabilty of heads 2/3. How do make a fair toss using such a coin.

    http://www.careercup.com/question?q=c7e00bf1-4a0c-4d75-b279-1888644d62a2http://www.careercup.com/question?q=c7e00bf1-4a0c-4d75-b279-1888644d62a2
  • 8/9/2019 Algorithms Q.pdf

    6/6

    Programming

    Write a program to print all subsets of a given set.

    Linklist reversal.

    String reversal (UTL 8)

    Permutaion of n numbers (distinct and non distinct)

    Write a program for atoi and itoa.

    rotate a link list mod - 3 by 1 (ex. a-b-c-d-e-f ..... c-a-b-f-d-e)