Here, I post stuff that i have got chance to explore. I put in the links to the articles that i find most suitable, and as i explore the topic more i add my own comments as well.
Showing posts with label to be solved. Show all posts
Showing posts with label to be solved. Show all posts
Monday, 8 October 2012
Tuesday, 28 August 2012
How to find the longest palindrome in a string in linear time
Solution:
Probably finding the LCS (longest common sub-sequence) between the string and its reverse.
anand tech blog ??
Probably finding the LCS (longest common sub-sequence) between the string and its reverse.
anand tech blog ??
Microsoft Interview- Two elements of BST are swapped by mistake. You have to restore the tree without changing its structure.
Two elements of BST are swapped by mistake. You have to restore the tree without changing its structure.
Solution:
// incomplete solution
Node fixSwappedBST ( Node r, int min, int max, Node toFix){
// r - root node, r.val >= min && r.val <= max and toFix is the node which needs to be fixed and was at a wrong place in the left subtree of the common ancestor (of the swapped nodes)
if(r==null) return null;
if(r.val<min || r.val > max){ // wrong node, so fix it
if(toFix != null) { // swap the nodes
int tmp = toFix.val; toFix.val=r.val; r.val=tmp;
}
else{ toFix = r; }
fixSwappedBST(r.left, min..
}
else{
fixSwappedBST(r.left, min, r.val,toFix);
fixSwappedBST(r.right,r.val, max,toFix);
}
}
Another approach:
Do a Pre-order traversal of the BST. It would be wrong at two places, identify those two positions in the Pre-order traversal. Identify the first element of the pair where it is out of order and the last element of the pair where it is again out of order.
In the next traversal, swap these two nodes. Would this work ??
Solution: http://www.geeksforgeeks.org/archives/23616
Reference: http://www.geeksforgeeks.org/archives/23088
Solution:
// incomplete solution
Node fixSwappedBST ( Node r, int min, int max, Node toFix){
// r - root node, r.val >= min && r.val <= max and toFix is the node which needs to be fixed and was at a wrong place in the left subtree of the common ancestor (of the swapped nodes)
if(r==null) return null;
if(r.val<min || r.val > max){ // wrong node, so fix it
if(toFix != null) { // swap the nodes
int tmp = toFix.val; toFix.val=r.val; r.val=tmp;
}
else{ toFix = r; }
fixSwappedBST(r.left, min..
}
else{
fixSwappedBST(r.left, min, r.val,toFix);
fixSwappedBST(r.right,r.val, max,toFix);
}
}
Another approach:
Do a Pre-order traversal of the BST. It would be wrong at two places, identify those two positions in the Pre-order traversal. Identify the first element of the pair where it is out of order and the last element of the pair where it is again out of order.
In the next traversal, swap these two nodes. Would this work ??
Solution: http://www.geeksforgeeks.org/archives/23616
Reference: http://www.geeksforgeeks.org/archives/23088
Thursday, 10 May 2012
Probability and the chessboard horse
A horse is in chessboard. given its x,y find the probability through program that it will remain in board after n moves.
http://www.careercup.com/question?id=12695674
http://www.careercup.com/question?id=12695674
Subscribe to:
Comments (Atom)