programming question

23

Click here to load reader

Upload: ganesh-arora

Post on 18-Jul-2016

102 views

Category:

Documents


1 download

DESCRIPTION

Programming Question

TRANSCRIPT

Page 1: Programming Question

Please refresh this page to receive new updates.

Add Question

HomeOpen Questions

Notifications

5

Ganesh

QUESTION TOPICS

Programming Interview Questions

Technical Interview Questions

Programming Interviews

Best of X

Edit Topics

SHARE QUESTION

Twitter Facebook

QUESTION STATS

Views53,149 Followers 958

Page 2: Programming Question

Latest activity: Mon

★ What are the top 10 most popular dynamic programming problems among interviewers?Write Question DetailsFollow Question958

Comment1Share9Downvote

Write your answer, or answer later.9 ANSWERSASK TO ANSWER

Anant Sharma, Spectator188 upvotes by Angel Dhiman, Rahul Attuluri, Raja Soni, (more)Following questions are the most popular dynamic programming problems for interviews :

1. Given a matrix consisting of 0's and 1's, find the maximum size sub-matrix consisting of only 1's.

2. Given an array containing both positive and negative integers, find the contiguous array with the maximum sum.

Page 3: Programming Question

3. Longest Increasing Subsequence - Find the length of the longest subsequence of a given sequence such that all the elements are sorted in increasing/non-decreasing order.There are many problems which reduce to the this problem such as box stacking and the building bridges. These days the interviewers expect an NLogN solution.

4. Edit Distance - Given two strings and a set of operations Change (C), insert (I) and delete (D) , find minimum number of edits (operations) required to transform one string into another.

5. 0/1 Knapsack Problem - A thief robbing a store and can carry a maximal weight of W  into their knapsack. There are n items and ith  item weigh wiand is worth vi dollars. What items should thief take?

6. Balanced Partition - You have a set of n integers each in the range 0 … K. Partition these integers into two subsets such that you minimize |S1 – S2|, where S1 and S2 denote the sums of the elements in each of the two subsets.

7. Coin Change - Given a value N, if we want to make change for N cents, and we have infinite supply of each of S = { S1, S2, .. , Sm} valued coins, how many ways can we make the change?

8. Longest Common Subsequence - Find the longest common subsequence of two strings A and B where the elements are letters from the two strings and they should be in the same order.

9. Longest Palindromic Subsequence - The question is same as above but the subsequence should be palindromic as well.

10. Minimum Number of Jumps - Given an array of integers where each element represents the maximum number of steps that can be made forward from that element, find the minimum number of jumps to reach the end of the array (starting from the first element).

  Written 1 Jan, 2013.Upvote188

DownvoteCommentShare4

Gaurav Aggarwal, Computer Science Grad, IIT Delhi46 upvotes by Shehbaz Jaffer, Vigya Sharma, Charles Caplan, (more)Here is the list of 10 dynamic programming questions that are commonly asked by interviewers (I made this list while preparing for interviews):

Page 4: Programming Question

1. Dice Throw Problem: Given n dice each with m faces, numbered from 1 to m, find the number of  ways to get sum X. X is the summation of values on each face when all  the dice are thrown.

2. Coin Change: You are given n types of coin denominations of values v(1) < v(2) < ... < v(n) (all integers). Assume v(1) = 1, so you can always make change for any amount of money C. Give an algorithm which makes change for an amount of money C with as few coins as possible.

3. Counting Boolean Parenthesizations: You are given a boolean expression consisting of a string of the symbols 'true', 'false', 'and', 'or', and 'xor'. Count the number of ways to parenthesize the expression such that it will evaluate to true. For example, there is only 1 way to parenthesize 'true and false xor true' such that it evaluates to true.

4. Subset Sum Problem: Given a set of non-negative integers, and a value sum, determine if there is a subset of the given set with sum equal to given sum.Minimum  Number of Jumps: Given an array of integers where each element  represents the maximum number of steps that can be made forward from  that element, find the minimum number of jumps to reach the end of the  array (starting from the first element).

5. Two-Person Traversal of a Sequence of Cities: You are given an ordered sequence of n cities, and the distances between every pair of cities. You must partition the cities into two subsequences (not necessarily contiguous) such that person A visits all cities in the first subsequence (in order), person B visits all cities in the second subsequence (in order), and such that the sum of the total distances travelled by A and B is minimized. Assume that person A and person B start initially at the first city in their respective subsequences.

6. Balanced Partition: You have a set of n integers each in the range 0 ... K. Partition these integers into two subsets such that you minimize |S1 - S2|, where S1 and S2 denote the sums of the elements in each of the two subsets.

7. Optimal Strategy for a Game: Consider a row of n coins of values v(1) ... v(n), where n is even. We play a game against an opponent by alternating turns. In each turn, a player selects either the first or last coin from the row, removes it from the row permanently, and receives the value of the coin. Determine the maximum possible amount of money we can definitely win if we move first.

8. Maximum Value Contiguous Subsequence: Given a sequence of n real numbers A(1) ... A(n), determine a contiguous subsequence A(i) ... A(j) for which the sum of elements in the subsequence is maximized.

9. Edit Distance: Given two text strings A of length n and B of length m, you want to transform A into B with a minimum number of operations of the following types: delete a character from A, insert a character into A, or change some character in A into a new character. The minimal number of

Page 5: Programming Question

such operations required to transform A into B is called the edit distance between A and B.

  Written 10 Jun, 2013.Upvote46

DownvoteComments1+ShareAds by GoSaveAd Options

Harry He, Author of <Coding Interviews: ... (more) 39 upvotes by Kritin Vij, Ganesh Raman, Thanh Thai, (more)Dynamic Programming Interview Questions

The link above collects some problems solved by dynamic programming, such as:

1. Maximum Sum of All Sub-arrays  A sub-array has one number of some continuous numbers. Given an integer array  with positive numbers and negative numbers, get the maximum sum of all  sub-arrays. Time complexity should be O(n). For example, in the array {1, -2, 3, 10, -4, 7, 2,  -5}, its sub-array {3, 10, -4, 7, 2} has the  maximum sum 18.

2. Maximal Length of Incremental Subsequences Given an unsorted array, find the max length of subsequence in which the numbers  are in incremental order. 

For example: If the input array is {7, 2, 3, 1, 5, 8, 9,  6}, a subsequence with the most numbers in incremental order is {2, 3, 5, 8, 9}  and the expected output is 5.

3. Edit Distance Implement a function which gets the edit distance of two input strings. There  are three types of edit operations: insertion, deletion and substitution. Edit  distance is the minimal number of edit operations to modify a string from one to  the other.

4. Minimal Number of Coins for Change Please implement a function which gets the minimal number of coins, whose value  is v1, v2, …, vn, to make change for an amount  of money with value t. Any coin with value vi may duplicate for any  times to make change. For example, the minimal number of coins to make change for  15 out of a set of coins with value 1, 3, 9, 10 is 3. We can choose two coins  with value 3 and a

Page 6: Programming Question

coin with value 9. The number of coins for other choices  should be greater than 3.

5. Dynamic Programming on Stolen Values There are n houses built in a line, each of which contains some value in  it. A thief is going to steal the maximal value in these houses, but he cannot  steal in two adjacent houses because the owner of a stolen house will tell his  two neighbors on the left and right side. What is the maximal stolen  value?

6. Longest Substring without DuplicationGiven a string, please get the length of the longest substring which does not have duplicated characters. Supposing all characters in the string are in the range from ‘a’ to ‘z’.

 7. Maximal Product when Cutting RopeGiven a rope with length n, how to cut the rope into m parts with length n[0],n[1], ...,n[m-1], in order to get the maximal product of n[0]*n[1]* ... *n[m-1]? We have to cut once at least. Additionally, the length of the whole length of the rope, as well as the length of each part, are in integer value.  Written 17 Dec, 2013.Upvote39

DownvoteComment1Share

Arpit Agarwal, Have Cracked Interviews of Fac... (more) 42 upvotes by Souptik Sen, Jashwanth Reddy, Rahul Attuluri, (more)Dynamic Programming Practice Problems

Dynamic Programming Archives - GeeksforGeeks

These links may help you. Most of the DP problems that I have faced in interviews are covered in these two sites.

Topcoder also has a good collection of DP problems ranging from easy to hard. To gain confidence in DP I would suggest first go through the above links , then try solving the DP problems on Topcoder.  Written 30 Dec, 2012.Upvote42

DownvoteCommentShare

Page 7: Programming Question

Abhijeet Nayak, Still figuring it out.17 upvotes by Priyanshu Jha, Julien Buty, Sada Kurapati, (more)Checkout following MIT link. It has very good short videos about popular DP problems.

Dynamic Programming Practice Problems  Written 13 Jan.Upvote17

DownvoteCommentShare3Ads by GoSaveAd Options

Chandramouli Raghunath, Interviewed with a bunch of te... (more)10 upvotes by Mithun Sasidharan, Harshal Godhia, Venkatesh Thallam, (more)A couple of questions I was asked during the time I interviewed

1. A robot starts from the top left corner(1,1) of a MxN grid. The goal of the robot is to reach right bottom(M,N). At each step the robot can make one of the two choices - move one cell right, move one cell bottom. Write a function which takes M and N as arguements and returns the count of total possible path for the robot to reach its destination.

2. You are standing in front of a staircase which has N stairs. Your goal is to reach the top. At each step i, you have three choices hop to next step i+1, or i+2 or i+3. Given N, return the count of total possible paths for you to reach N.

[Edit]

I found a book in Amazon which has a collection of dynamic programming questions!

Amazon.com: A Collection of Dynamic Programming Interview Questions Solved in C++ eBook: Antonio Gulli: Kindle Store  Updated 12 Aug.Upvote10

Downvote

Page 8: Programming Question

Comment1Share

Write your answer, or answer later.There's more on Quora...Pick new people and topics to follow and see the best answers on Quora.

Update Your Interests

RELATED QUESTIONS

Off the top of your head what is the most interesting programming problem you know?

What are the best sources for practicing Dynamic Programming problems?

Dynamic programming question to code in 10 min during phone Interview, how reasonable is it?

What are some of the toughest dynamic programming problems which one can face during a technical interview?

Is Facebook biased towards interview candidates who are top rankers in online programming competitions?

What are some typical hands-on programming problems given in a software engineer interview?

There is a big file of words which is dynamically changing. We are continuously adding some words into it. How would you k... (continue)

What happened to Programming Interview Questions | CareerCup? i can't browse the website anymore. anyone having the same p... (continue)

List of all SPOJ problems which can be a good source for practicing graph algorithms and dynamic programming?

Page 9: Programming Question

Programming Interview Questions: Given an expression in the form of a string, solve for x?

More Related Questions

Top Stories from Your FeedAds by GoSaveAd Options

And another web site

Program Creek oo Simple Java o Coding Interview Java oooooooo Design Patterns in Stories Java Examples Web Frameworks ooo Eclipse ooo

Top 10 Algorithms for Coding Interview  By X Wang

PDF Version (updated on 1/16/2014)The following are top 10 algorithms related topics for coding interviews. As understanding those concepts requires much more effort, this list below only

Page 10: Programming Question

serves as an introduction. They are viewed from a Java perspective. The topics that are covered include: String/Array/Matrix, Linked List, Tree, Heap, Graph, Sorting, Recursion vs. Iteration, Dynamic Programming, Bit Manipulation, Probability, Combinations and Permutations, and other interesting problems. I highly recommend you to read"Simple Java" first, if you need a brief review of Java basics.1. String/Array/MatrixFirst of all, String in Java is a class that contains a char array and other fields and methods. Without code auto-completion of any IDE, the following methods should be remembered.toCharArray() //get char array of a StringArrays.sort() //sort an arrayArrays.toString(char[] a) //convert to stringcharAt(int x) //get a char at the specific indexlength() //string lengthlength //array size substring(int beginIndex) substring(int beginIndex, int endIndex)Integer.valueOf()//string to integerString.valueOf()/integer to stringStrings/arrays are easy to understand, but questions related to them often require advanced algorithm to solve, such as dynamic programming, recursion, etc.

Classic problems:1) Evaluate Reverse Polish Notation2) Longest Palindromic Substring3) Word Break4) Word Ladder5) Median of Two Sorted Arrays6) Regular Expression Matching7) Merge Intervals8) Insert Interval9) Two Sum9) 3Sum9) 4Sum10) 3Sum Closest11) String to Integer12) Merge Sorted Array13) Valid Parentheses14) Implement strStr()15) Set Matrix Zeroes16) Search Insert Position17) Longest Consecutive Sequence18) Valid Palindrome19) Spiral Matrix

Page 11: Programming Question

20) Search a 2D Matrix21) Rotate Image22) Triangle23) Distinct Subsequences Total24) Maximum Subarray25) Remove Duplicates from Sorted Array26) Remove Duplicates from Sorted Array II27) Longest Substring Without Repeating Characters28) Longest Substring that contains 2 unique characters29) Palindrome Partitioning30) Reverse Words in a String2. Linked ListThe implementation of a linked list is pretty simple in Java. Each node has a value and a link to next node.class Node {

int val;Node next;

 Node(int x) {

val = x;next = null;

}}Two popular applications of linked list are stack and queue.

Stackclass Stack{

Node top;  

public Node peek(){if(top != null){

return top;}

 return null;

public Node pop(){if(top == null){

return null;}else{

Node temp = new Node(top.val);top = top.next;return temp;

}}

 public void push(Node n){

if(n != null){n.next = top;

Page 12: Programming Question

top = n;}

}}Queueclass Queue{

Node first, last; 

public void enqueue(Node n){if(first == null){

first = n;last = first;

}else{last.next = n;last = n;

}}

 public Node dequeue(){

if(first == null){return null;

}else{Node temp = new Node(first.val);first = first.next;return temp;

}}

}It is worth to mention that Java standard library already contains a class called "Stack", and LinkedListcan be used as a Queue (add() and remove()). (LinkedList implements the Queue interface) If you need a stack or queue to solve problems during your interview, you can directly use them.Classic Problems:1) Add Two Numbers2) Reorder List3) Linked List Cycle4) Copy List with Random Pointer5) Merge Two Sorted Lists6) Merge k Sorted Lists *7) Remove Duplicates from Sorted List8) Partition List9) LRU Cache3. Tree & HeapTree here is normally binary tree. Each node contains a left node and right node like the following:class TreeNode{

int value;TreeNode left;TreeNode right;

}

Page 13: Programming Question

Here are some concepts related with trees:

1. Binary Search Tree: for all nodes, left children <= current node <= right children2. Balanced vs. Unbalanced: In a balanced tree, the depth of the left and right

subtrees of every node differ by 1 or less.3. Full Binary Tree: every node other than the leaves has two children.4. Perfect Binary Tree: a full binary tree in which all leaves are at the same depth or

same level, and in which every parent has two children.5. Complete Binary Tree: a binary tree in which every level, except possibly the last, is

completely filled, and all nodes are as far left as possibleHeap is a specialized tree-based data structure that satisfies the heap property. The time complexity of its operations are important (e.g., find-min, delete-min, insert, etc). In Java, PriorityQueue is important to know.Classic problems:1) Binary Tree Preorder Traversal 2) Binary Tree Inorder Traversal3) Binary Tree Postorder Traversal4) Word Ladder5) Validate Binary Search Tree6) Flatten Binary Tree to Linked List7) Path Sum8) Construct Binary Tree from Inorder and Postorder Traversal9) Convert Sorted Array to Binary Search Tree10) Convert Sorted List to Binary Search Tree11) Minimum Depth of Binary Tree12) Binary Tree Maximum Path Sum *13) Balanced Binary Tree4. GraphGraph related questions mainly focus on depth first search and breath first search. Depth first search is straightforward, you can just loop through neighbors starting from the root node.

Below is a simple implementation of a graph and breath first search. The key is using a queue to store nodes.

Page 14: Programming Question

1) Define a GraphNodeclass GraphNode{

int val;GraphNode next;GraphNode[] neighbors;boolean visited;

 GraphNode(int x) {

val = x;}

 GraphNode(int x, GraphNode[] n){

val = x;neighbors = n;

public String toString(){return "value: "+ this.val;

}}2) Define a Queueclass Queue{

GraphNode first, last; 

public void enqueue(GraphNode n){if(first == null){

first = n;last = first;

}else{last.next = n;last = n;

}}

 public GraphNode dequeue(){

Page 15: Programming Question

if(first == null){return null;

}else{GraphNode temp = new GraphNode(first.val, first.neighbors);first = first.next;return temp;

}}

}3) Breath First Search uses a Queuepublic class GraphTest { 

public static void main(String[] args) {GraphNode n1 = new GraphNode(1); GraphNode n2 = new GraphNode(2); GraphNode n3 = new GraphNode(3); GraphNode n4 = new GraphNode(4); GraphNode n5 = new GraphNode(5);

 n1.neighbors = new GraphNode[]{n2,n3,n5};n2.neighbors = new GraphNode[]{n1,n4};n3.neighbors = new GraphNode[]{n1,n4,n5};n4.neighbors = new GraphNode[]{n2,n3,n5};n5.neighbors = new GraphNode[]{n1,n3,n4};

 breathFirstSearch(n1, 5);

public static void breathFirstSearch(GraphNode root, int x){if(root.val == x)

System.out.println("find in root"); 

Queue queue = new Queue();root.visited = true;queue.enqueue(root);

 while(queue.first != null){

GraphNode c = (GraphNode) queue.dequeue();for(GraphNode n: c.neighbors){

 if(!n.visited){

System.out.print(n + " ");n.visited = true;if(n.val == x)

System.out.println("Find "+n);queue.enqueue(n);

}}

}}

}Output:

Page 16: Programming Question

value: 2 value: 3 value: 5 Find value: 5

value: 4

Classic Problems:1) Clone Graph5. SortingTime complexity of different sorting algorithms. You can go to wiki to see basic idea of them.

Algorithm Average Time Worst Time Space

Bubble sort n^2 n^2 1

Selection sort n^2 n^2 1

Insertion sort n^2 n^2

Quick sort n log(n) n^2

Merge sort n log(n) n log(n) depends* BinSort, Radix Sort and CountSort use different set of assumptions than the rest, and so they are not "general" sorting methods. (Thanks to Fidel for pointing this out)

Here are some implementations/demos, and in addition, you may want to check out how Java developers sort in practice.1) Mergesort2) Quicksort3) InsertionSort.6. Recursion vs. IterationRecursion should be a built-in thought for programmers. It can be demonstrated by a simple example.

Question:

there are n stairs, each time one can climb 1 or 2. How many different ways to climb the stairs?

Step 1: Finding the relationship before n and n-1.To get n, there are only two ways, one 1-stair from n-1 or 2-stairs from n-2. If f(n) is the number of ways to climb to n, then f(n) = f(n-1) + f(n-2)

Step 2: Make sure the start condition is correct.f(0) = 0;f(1) = 1;public static int f(int n){

if(n <= 2) return n;

Page 17: Programming Question

int x = f(n-1) + f(n-2);return x;

}The time complexity of the recursive method is exponential to n. There are a lot of redundant computations.

f(5)

f(4) + f(3)

f(3) + f(2) + f(2) + f(1)

f(2) + f(1) + f(2) + f(2) + f(1)

It should be straightforward to convert the recursion to iteration.public static int f(int n) { 

if (n <= 2){return n;

int first = 1, second = 2;int third = 0;

 for (int i = 3; i <= n; i++) {

third = first + second;first = second;second = third;

return third;}For this example, iteration takes less time. You may also want to check out Recursion vs Iteration.7. Dynamic ProgrammingDynamic programming is a technique for solving problems with the following properties:

1. An instance is solved using the solutions for smaller instances.2. The solution for a smaller instance might be needed multiple times.3. The solutions to smaller instances are stored in a table, so that each smaller

instance is solved only once.4. Additional space is used to save time.

The problem of climbing steps perfectly fit those 4 properties. Therefore, it can be solve by using dynamic programming.public static int[] A = new int[100]; public static int f3(int n) {

Page 18: Programming Question

if (n <= 2)A[n]= n;

 if(A[n] > 0)

return A[n];else

A[n] = f3(n-1) + f3(n-2);//store results so only calculate once!return A[n];

}Classic problems:1) Edit Distance2) Longest Palindromic Substring3) Word Break4) Maximum Subarray8. Bit ManipulationBit operators:

OR (|) AND (&) XOR (^) Left Shift (<<) Right Shift (>>) Not (~)

1|0=1 1&0=0 1^0=1 0010<<2=1000 1100>>2=0011 ~1=0Get bit i for a give number n. (i count from 0 and starts from right)public static boolean getBit(int num, int i){

int result = num & (1<<i); 

if(result == 0){return false;

}else{return true;

}}For example, get second bit of number 10.

i=1, n=10

1<<1= 10

1010&10=10

10 is not 0, so return true;

Classic Problems:1) Find Single Number2) Maximum Binary Gap9. ProbabilitySolving probability related questions normally requires formatting the problem well. Here is just a simple example of such kind of problems.

There are 50 people in a room, what's the probability that two people have the same birthday? (Ignoring the fact of leap year, i.e., 365 day every year)

Page 19: Programming Question

Very often calculating probability of something can be converted to calculate the opposite. In this example, we can calculate the probability that all people have unique birthdays. That is: 365/365 * 364/365 * 363/365 * ... * 365-n/365 * ... * 365-49/365. And the probability that at least two people have the same birthday would be 1 - this value.public static double caculateProbability(int n){

double x = 1;  

for(int i=0; i<n; i++){x *= (365.0-i)/365.0;

double pro = Math.round((1-x) * 100);return pro/100;

}calculateProbability(50) = 0.97

10. Combinations and PermutationsThe difference between combination and permutation is whether order matters.

Example 1:

Given 5 numbers - 1, 2, 3, 4 and 5, print out different sequence of the 5 numbers. 4 can not be the third one, 3 and 5 can not be adjacent. How many different combinations?

Example 2:

Given 5 banaba, 4 pear, and 3 apple, assuming one kind of fruit are the same, how many different combinations?

Class Problems:1) Permutations2) Permutations II 3) Permutation Sequence4) Generate ParenthesesSome other problems need us to use observations to form rules to solve them:

1) Reverse Integer2) Palindrome Number3) Pow(x,n)4) Subsets5) Subsets II

Page 20: Programming Question

Additional Resources1. Share your code to Github/BitBucketYou may also like ...1. How to answer coding questions for your interview? 2. 面 试 10 大算法 汇总+常见题目解答 3. Leetcode Solution of Iterative Binary Tree Postorder Traversal in Java 4. LeetCode – Merge k Sorted Lists (Java)

Category >> Algorithms >> Interview  

If you want to post code, please put the code inside <pre> and </pre> tags.

GEEKI think the worst-case running time of counting sort is O(N+K), according to the book .

Copyright © 2008 - 2014 programcreek.com

Ads by GoSaveAd Options

Search