<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3063930775303101240</id><updated>2012-01-24T06:30:03.652-08:00</updated><category term='number occuring exactly n/2 times'/><category term='cormen'/><category term='lru'/><category term='sort huge file'/><category term='unbounded'/><category term='walk the bridge'/><category term='unimodal'/><category term='strategy'/><category term='wine'/><category term='puzzle'/><category term='algorithms'/><category term='riddle'/><category term='array'/><category term='problem solving'/><category term='transitive correlation'/><category term='find celebrity'/><category term='k numbers in array of n numbers sum to T'/><category term='trees'/><category term='repeating'/><category term='break balls'/><category term='recurrsion'/><category term='searching'/><category term='odd man out'/><category term='max and min difference in unsorted numbers'/><category term='probability'/><category term='backtracking'/><category term='sort'/><category term='chromatic number'/><category term='computer science'/><category term='randomized'/><category term='posionous bottle'/><category term='wire connections'/><category term='sort large file'/><category term='OCW'/><category term='find majority element'/><category term='binary trees'/><category term='heavy light balls'/><category term='water jugs'/><category term='flip bits in matric'/><category term='algorithm'/><category term='prisoners'/><category term='data structures'/><category term='Loop&apos;s in linked lists.'/><category term='find heavy balls'/><category term='matrix'/><category term='graph theory'/><category term='statergy'/><category term='search'/><category term='Find number of digits in a factorial'/><category term='mathematics'/><category term='proof exact n/2 elements'/><category term='Find Odd ball in 12 balls.'/><category term='No sorting can be better than O( n logn)'/><category term='minimum colors to paint graph'/><category term='caching'/><category term='sets'/><title type='text'>Puzzles</title><subtitle type='html'>If  data structure augmentation and designing algorithms  give you a high and you wish to post in this forum email me(Inder) at inder.pall@gmail.com
&lt;br&gt;
DISCLAIMER : questions posted here could be from multiple source, i'll try my best to provide credit.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default?start-index=101&amp;max-results=100'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>241</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-8979286279200984297</id><published>2011-08-02T04:46:00.001-07:00</published><updated>2011-08-02T04:51:54.109-07:00</updated><title type='text'>Implement a trie</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;1. without compaction - &lt;a href="https://github.com/inders/datastructure-repo/tree/master/trie/src/trie"&gt;TRIE IMPLEMENTATION WITHOUT COMPACTION...here&lt;/a&gt;&lt;br /&gt;2. with compaction&lt;br /&gt;3. use it to implement a suffix TREE&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-8979286279200984297?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/8979286279200984297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=8979286279200984297' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/8979286279200984297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/8979286279200984297'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2011/08/implement-trie.html' title='Implement a trie'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-2953382992993607150</id><published>2011-04-02T12:10:00.000-07:00</published><updated>2011-04-02T12:10:47.429-07:00</updated><title type='text'>Design an efficent structure to store an orginizational hirearchy</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;You'll have someone starting from CEO, CTO, and multiple levels&lt;br /&gt;Your data structure should be able to support the following operations efficiently&lt;br /&gt;&lt;br /&gt;addInvididualContributor()&lt;br /&gt;addManager()&lt;br /&gt;deleteManager()&lt;br /&gt;deleteIndividualContributor()&lt;br /&gt;getEmployeeCountUnderAnEmployee()&lt;br /&gt;getLeastCommonAncestorAcrossTwoEmployees()&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-2953382992993607150?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/2953382992993607150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=2953382992993607150' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/2953382992993607150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/2953382992993607150'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2011/04/design-efficent-structure-to-store.html' title='Design an efficent structure to store an orginizational hirearchy'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-360040881484273916</id><published>2011-03-15T00:12:00.001-07:00</published><updated>2011-03-15T00:12:26.486-07:00</updated><title type='text'>Given a range find how many numbers occur within it</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;You are receiving a continuous stream of numbers, at any point i'll  provide a range eg: 5- 15 and the output should be the number of numbers  between 5-15.&lt;br /&gt;&lt;br /&gt;P.S. - Since the input is a stream the output can change for the same range if the function is called again.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-360040881484273916?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/360040881484273916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=360040881484273916' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/360040881484273916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/360040881484273916'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2011/03/given-range-find-how-many-numbers-occur.html' title='Given a range find how many numbers occur within it'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-7511449308473947877</id><published>2010-11-20T10:52:00.000-08:00</published><updated>2010-11-20T10:52:25.196-08:00</updated><title type='text'>Remove characters from String</title><content type='html'>Input String&amp;nbsp; = str, Character to be removed = removeArr[]&lt;br /&gt;&lt;br /&gt;You have to do in O(n) time and if possible can you avoid any extra storage for the temporary storage&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;/*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* Delete given characters from an input string&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* Approach&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* 1. Load charTodelete to delete in a hashmap&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* 2. keep two pointers -&amp;gt; charRead, positionToInsert&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* 3. Read input char by char and check if it's in the map above increment charToRead&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp; else increment charRead, positionToInsert and copy over the string from charRead to&amp;nbsp; positionToInsert&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* 4. When charRead has reached end of string &amp;amp;&amp;amp;&amp;nbsp; positionToInsert &amp;lt; positionToInsert&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp; Remove characters&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp; string is "inder" delete i d e =&amp;gt; nr&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;i style="color: #0b5394;"&gt; public String deleteCharactersFromString(String input, String[] charTodelete) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Map &lt;string, string=""&gt; charTodeleteMap = new HashMap&lt;string, string=""&gt; ();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int charRead = 0, positionToInsert = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (input == null || charTodelete == null) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; char[] inputArr = input.toCharArray();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// 1. Load charTodelete to delete in a hashmap&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; for (String str: charTodelete) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (str != null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("insert in map " + str.trim());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; charTodeleteMap.put(str.trim(), str.trim());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //Read input char by char and check if it's in the map above increment charToRead&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp; else increment charRead, positionToInsert&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; for(int j=0; j &amp;lt; inputArr.length; j++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String ch = Character.toString(inputArr[j]);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("ch = " + ch);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (charTodeleteMap.get(ch) == null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("Character not to be delted&amp;nbsp; ="&amp;nbsp; + ch + " positionToInsert = " + positionToInsert + " charRead " + charRead);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //delete this character from input&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; inputArr[positionToInsert] = inputArr[charRead];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; charRead++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; positionToInsert++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; charRead++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return new String(inputArr, 0, positionToInsert);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/string,&gt;&lt;/string,&gt;&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-7511449308473947877?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/7511449308473947877/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=7511449308473947877' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/7511449308473947877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/7511449308473947877'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2010/11/remove-characters-from-string.html' title='Remove characters from String'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-6495611011247201142</id><published>2010-11-20T08:21:00.001-08:00</published><updated>2010-11-20T10:54:50.559-08:00</updated><title type='text'>Find first non repeating character in a String</title><content type='html'>if input = "total" answer = "o"&lt;br /&gt;if input = "tweetweer" answer = "r"&lt;br /&gt;if input = " gnu " answer = ...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Approach - to do in O(n)&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;1. Parse the string character by character and populate a map with count of each character&lt;/b&gt;&lt;br /&gt;&lt;b&gt;2. parse the string again and lookup character in map and get the count, store the key returning  1 first as a potential answer&lt;/b&gt;&lt;br /&gt;&lt;b&gt;3.  As a part of step2 also check if any character has a count &amp;gt; 1 in which case return the answer stored in step2 else return null&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;Java Code&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;--------------&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;package StringOps;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;import java.util.HashMap;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;import java.util.Map;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;public class StringOps {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;i style="color: #0b5394;"&gt;/* To find first non repeating character in a string&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * eg: if string is 'total' then 'o' is the answer&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * eg: if string is 'tweetwer' then 'r' is the answer&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * time complexity :&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * space complexity; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public String findFirstNonRepeatingChar(String s) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (s == null)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return null;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// Parse the String and put it in a array of 256 bit characters if we&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// assume it's a ASCII string set, however for unicode the string &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// could have more characters, hence creating a large array would be waste&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// so we can use a Map which only consume space as the kind of characters &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// are present&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Map&lt;string, integer=""&gt; inputMap = new HashMap&lt;string, integer=""&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for(int i=0; i &amp;lt; s.length(); i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;String key = s.substring(i, i+1);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (inputMap.get(key) == null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;inputMap.put(key, new Integer(0));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;else {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Integer it = new Integer ((inputMap.get(key)).intValue() + new Integer(1).intValue());&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;inputMap.put(key, it);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//Now start from the start of the string and find the character which has count 1&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// first in order from left to right&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;boolean found = false;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;boolean foundAnyRepeating = false;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;String nonRepeatingStr = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for(int i=0; i &amp;lt; s.length(); i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;String key = s.substring(i, i+1);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if(inputMap.get(key).intValue() == 0 &amp;amp;&amp;amp; !found) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;nonRepeatingStr = key;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;found = true;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if(inputMap.get(key).intValue() &amp;gt; 0 ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;foundAnyRepeating = true;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (foundAnyRepeating) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return nonRepeatingStr;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;else &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return null;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public boolean testFindFirstNonRepeatingChar(String str) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;String repeatingCharacter = findFirstNonRepeatingChar(str);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if ( repeatingCharacter == null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;System.out.println("No repeating character in [" + str + "]");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return false;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;else {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;System.out.println("First non repeating character in [" + str + "] = [" + repeatingCharacter + "]");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return true;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;public static void main(String[] args) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;StringOps sOps = new StringOps();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;String[] delArray = {"i", "d", "e"};&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;String op = sOps.deleteCharactersFromString("inder", delArray);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;System.out.println("output = " + op);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;sOps.testFindFirstNonRepeatingChar("total");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;sOps.testFindFirstNonRepeatingChar("tweetwer");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;sOps.testFindFirstNonRepeatingChar("inder");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;}&lt;/string,&gt;&lt;/string,&gt;&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-6495611011247201142?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/6495611011247201142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=6495611011247201142' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/6495611011247201142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/6495611011247201142'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2010/11/find-first-non-repeating-character-in.html' title='Find first non repeating character in a String'/><author><name>Saily</name><uri>http://www.blogger.com/profile/17569375103916834575</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-4062248143884295792</id><published>2010-11-15T22:51:00.000-08:00</published><updated>2011-08-02T04:45:35.533-07:00</updated><title type='text'>Find junction having GOLD</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;You are at a road intersection wherein 1KM north, south, east, west there is another junction like this in all infinite directions. You need find the junction having GOLD.&lt;br /&gt;&lt;br /&gt;Assume a graph like&lt;br /&gt;&lt;br /&gt;a&amp;nbsp;&amp;nbsp; &amp;lt;-&amp;gt; b &amp;lt;-&amp;gt; c &amp;lt;-&amp;gt; d&lt;br /&gt;|&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;e&amp;nbsp; &amp;lt;-&amp;gt;f &amp;lt;-&amp;gt;&amp;nbsp; g &amp;lt;-&amp;gt; h&lt;br /&gt;|&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;i &amp;lt;-&amp;gt; j &amp;lt;-&amp;gt; k &amp;lt;-&amp;gt;l&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Solution1.&lt;br /&gt;------------&lt;br /&gt;use BFS to traverse the graph..DFS might not work as it works by going in depth and then backtrack but this graph is infinite...in this case BFS would be better as it can be intutively thought of as doing smaller coenctric circles in a infinite space and then increasing the radius of circle, idea is to visit north, south, east, west of starting node and then do the same recursively for all those 4 nodes..everytime you are going 2 POW i nodes...&lt;br /&gt;&lt;br /&gt;&lt;a href="https://github.com/inders/datastructure-repo/tree/master/dikstra"&gt;GITHUB WORKING JAVA CODE ...here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;Code&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;------&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;import java.util.ArrayList;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;import java.util.List;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;public class BFS {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Node getGoldNode(Node node) {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(node.hasgold)&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return node;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&lt;node&gt; nodeList = new ArrayList&lt;node&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Start a BFS kind of search which &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // goes all the way in 2 power i&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //1. Visit all nodes of this node&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node north = node.getNorth();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node south = node.getSouth();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node east = node.getEast();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node west = node.getWest();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //2. Put these nodes in a list&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(north != null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("Adding node [" + north.getData() + "] to queue");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nodeList.add(north); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; north.setPendingCheck(true);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(south != null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("Adding node [" + south.getData() + "] to queue");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nodeList.add(south);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; north.setPendingCheck(true);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(east != null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("Adding node [" + east.getData() + "] to queue");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; north.setPendingCheck(true);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nodeList.add(east);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(west != null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("Adding node [" + west.getData() + "] to queue");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nodeList.add(west);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; north.setPendingCheck(true);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; node.setIsvisited(true);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Iterate through the list &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(nodeList.size() &amp;gt; 0) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //get the top node from the list and check whether it has gold&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node checkNode = nodeList.remove(0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("Checking node ["&amp;nbsp; + checkNode.getData() + "] for GOLD");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(checkNode.isHasgold()) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //node found return&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return checkNode;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //mark this node as visited&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(!checkNode.isIsvisited()) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("Node [" + checkNode.getData() + "] isn't visited..check for all directions for this node ");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //add the north, south, east, west of this node to the BFS search list&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(checkNode.getNorth() != null &amp;amp;&amp;amp; checkNode.getNorth().isIsvisited() == false &amp;amp;&amp;amp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; checkNode.getNorth().isPendingCheck() == false) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("Adding node [" + north.getData() + "] to queue");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nodeList.add(checkNode.getNorth()); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; checkNode.getNorth().setPendingCheck(true);&lt;/node&gt;&lt;/node&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;}&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(checkNode.getSouth() != null &amp;amp;&amp;amp; checkNode.getSouth().isIsvisited() == false &amp;amp;&amp;amp;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; checkNode.getSouth().isPendingCheck() == false) {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("Adding node [" + south.getData() + "] to queue");&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nodeList.add(checkNode.getSouth());&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; checkNode.getSouth().setPendingCheck(true);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(checkNode.getEast() != null &amp;amp;&amp;amp; checkNode.getEast().isIsvisited() == false &amp;amp;&amp;amp; &lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; checkNode.getEast().isPendingCheck() == false) {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("Adding node [" + east.getData() + "] to queue");&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; checkNode.getEast().setPendingCheck(true);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nodeList.add(checkNode.getEast());&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(checkNode.getWest() != null &amp;amp;&amp;amp; checkNode.getWest().isIsvisited() == false &amp;amp;&amp;amp;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; checkNode.getWest().isPendingCheck() == false) {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("Adding node [" + west.getData() + "] to queue");&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nodeList.add(checkNode.getWest());&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; checkNode.getWest().setPendingCheck(true);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // this node is already seen...mark it as visited&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; checkNode.setIsvisited(true);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Reached here&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return null;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void main(String[] args) {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node a = new Node();&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node b = new Node();&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node c = new Node();&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node d = new Node();&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node e = new Node();&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node f = new Node();&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node g = new Node();&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node h = new Node();&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node i = new Node();&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node j = new Node();&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node k = new Node();&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node l = new Node();&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a.setNorth(null); a.setSouth(e);a.setEast(b);&amp;nbsp;&amp;nbsp;&amp;nbsp; a.setWest( null); a.setData("a");&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b.setNorth(null); b.setSouth(f);b.setEast(c);&amp;nbsp;&amp;nbsp;&amp;nbsp; b.setWest(a);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b.setData("b");&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c.setNorth(null); c.setSouth(g);c.setEast(d);&amp;nbsp;&amp;nbsp;&amp;nbsp; c.setWest(b);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c.setData("c");&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;d.setNorth(null); d.setSouth(h);d.setEast(null); d.setWest(c);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d.setData("d");&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.setNorth(a);&amp;nbsp;&amp;nbsp;&amp;nbsp; e.setSouth(i);e.setEast(f);&amp;nbsp;&amp;nbsp;&amp;nbsp; e.setWest(null);&amp;nbsp; e.setData("e");&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.setNorth(b);&amp;nbsp;&amp;nbsp;&amp;nbsp; f.setSouth(j);f.setEast(g);&amp;nbsp;&amp;nbsp;&amp;nbsp; f.setWest(e);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.setData("f");&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g.setNorth(c);&amp;nbsp;&amp;nbsp;&amp;nbsp; g.setSouth(k);g.setEast(h);&amp;nbsp;&amp;nbsp;&amp;nbsp; g.setWest(f);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g.setData("g");&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.setNorth(d);&amp;nbsp;&amp;nbsp;&amp;nbsp; h.setSouth(l);h.setEast(null); h.setWest(g);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.setData("h");&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i.setNorth(e); i.setSouth(null);i.setEast(j);&amp;nbsp;&amp;nbsp;&amp;nbsp; i.setWest(null);&amp;nbsp; i.setData("i");&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; j.setNorth(f); j.setSouth(null);j.setEast(k);&amp;nbsp;&amp;nbsp;&amp;nbsp; j.setWest(i);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; j.setData("j");&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; k.setNorth(g); k.setSouth(null);k.setEast(l);&amp;nbsp;&amp;nbsp;&amp;nbsp; k.setWest(j);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; k.setData("k");&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; l.setNorth(h); l.setSouthsetEast(null); l.setWest(k);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; l.setData("l") ; l.setHasgold(true);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BFS bfs = new BFS();&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node finalNode = bfs.getGoldNode(f);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (finalNode == null) {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("No GOLD in the network");&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("Gold Found in network at Node [" + finalNode.getData() + "]");&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;}&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;Other classes required for above program are&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;public class Node {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node north;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; boolean hasgold;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; boolean isPendingCheck;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String data;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public String getData() {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return this.data;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void setData(String data) {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.data = data;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean isPendingCheck() {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return isPendingCheck;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void setPendingCheck(boolean isPendingCheck) {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.isPendingCheck = isPendingCheck;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean isHasgold() {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return hasgold;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void setHasgold(boolean hasgold) {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.hasgold = hasgold;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Node getNorth() {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return north;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void setNorth(Node north) {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.north = north;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Node getSouth() {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return south;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void setSouth(Node south) {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.south = south;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Node getEast() {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return east;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void setEast(Node east) {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.east = east;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Node getWest() {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return west;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void setWest(Node west) {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.west = west;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean isIsvisited() {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return isvisited;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void setIsvisited(boolean isvisited) {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.isvisited = isvisited;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node south;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node east;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; Node west;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; boolean isvisited;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;}&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;Solution2 -&amp;gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;------------- &lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;This is a classic case for single source shortest path(Dijkstra algorithm)using dynamic programming and can be implemented using min heap in O(V+E) logV. Requires getting minium for each vertex which contributes V log V and for each edge (degree of vertex) we have to update the values in the minimum heap which start at infinity and then get decremented which contributes E log V Look at the code to understand the time complexity better&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;Code&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;-------&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;import java.util.ArrayList;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;import java.util.Comparator;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;import java.util.HashMap;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;import java.util.Iterator;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;import java.util.List;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;import java.util.Map;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;import java.util.PriorityQueue;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;public class dijkstra {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void getSingleSourceShortestPath(Vertex s, Map g) {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PriorityQueue&lt;vertex&gt; minHeap = new PriorityQueue&lt;vertex&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Iterate through the graph vertex nodes and create a min heap based on distance from s&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Iterator&lt;vertex&gt; it =&amp;nbsp; g.keySet().iterator();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (it.hasNext()) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Vertex v = it.next();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("adding vertex [" + v.getName() + "] to minHeap");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; minHeap.add(v);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // As long as there are elements in the min heap do the following&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (minHeap.size() &amp;gt; 0) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //get the node minimum distance from s&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //first iteration would be s itself&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //This operation will repeat V times and each time the complexity is (logV)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //so this operation will overall add V (log V) to overall algo complexity&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Vertex v = minHeap.remove();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //visit all neighbours of v to see if there is a path already and if this path is better&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("---- Removing current minimum from S from heap to check =" + v.getName());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&lt;edge&gt; edgeList = (List&lt;edge&gt;) g.get(v);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (Edge edge:edgeList) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Vertex v1 = edge.getToVertex();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (v1 == null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(" null edge");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("Checking for vertex = " + v.getName() + " against edges for vertex " + v1.getName());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //new distance to reach v1 from s&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int newDistance = edge.getWeight() + v.getDistance();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( newDistance &amp;lt; v1.getDistance()) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; v1.setDistance(newDistance);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("Setting [" + v1.getName() + "] as predecessor for [" + v.getName() + "]");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; v1.setPredecessor(v);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //since we have changed the distance of v1 we need to remove and reinsert it to min heap&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // as minheap isn't self adjusting&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //The following opearation will take 2(log V) and needs to done based on degree(V) = E&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //in the worst case if the graph is fully connected so this opeation contributes overall&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // E log(V) to the overall time of this algorithm&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; minHeap.remove(v1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; minHeap.add(v1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;public static void main(String[] args) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Map&lt;vertex, list=""&gt;&lt;edge&gt;&amp;gt; graph = new HashMap&lt;vertex, list=""&gt;&lt;edge&gt;&amp;gt;();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Vertex a = new Vertex();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Vertex b = new Vertex();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Vertex c = new Vertex();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Vertex d = new Vertex();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Vertex e = new Vertex();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Vertex f = new Vertex();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Vertex g = new Vertex();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Vertex h = new Vertex();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Vertex i = new Vertex();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Vertex j = new Vertex();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Vertex k = new Vertex();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Vertex l = new Vertex();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Edge e1 = new Edge();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a.setDistance(Integer.MAX_VALUE);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a.setName("a");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e1.setWeight(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e1.setToVertex(b);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Edge e2 = new Edge();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e2.setToVertex(e);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e2.setWeight(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&lt;edge&gt; l1 = new ArrayList&lt;edge&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; l1.add(e1); l1.add(e2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; graph.put(a, l1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b.setDistance(Integer.MAX_VALUE);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b.setName("b");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Edge e3 = new Edge(); Edge e4 = new Edge(); Edge e5 = new Edge();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e3.setToVertex(a); e3.setWeight(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e4.setToVertex(c); e4.setWeight(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e5.setToVertex(f); e5.setWeight(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&lt;edge&gt; l2 = new ArrayList&lt;edge&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; l2.add(e3); l2.add(e4); l2.add(e5);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; graph.put(b, l2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c.setDistance(Integer.MAX_VALUE);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c.setName("c");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Edge e6 = new Edge(); Edge e7 = new Edge(); Edge e8 = new Edge();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e6.setToVertex(b); e6.setWeight(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e7.setToVertex(g); e7.setWeight(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e8.setToVertex(d); e8.setWeight(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&lt;edge&gt; l3 = new ArrayList&lt;edge&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; l3.add(e6); l3.add(e7); l3.add(e8);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; graph.put(c, l3);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d.setDistance(Integer.MAX_VALUE);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d.setName("d");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Edge e9 = new Edge(); Edge e10 = new Edge(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e9.setToVertex(c); e9.setWeight(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e10.setToVertex(h); e10.setWeight(1);&lt;/edge&gt;&lt;/edge&gt;&lt;/edge&gt;&lt;/edge&gt;&lt;/edge&gt;&lt;/edge&gt;&lt;/edge&gt;&lt;/vertex,&gt;&lt;/edge&gt;&lt;/vertex,&gt;&lt;/edge&gt;&lt;/edge&gt;&lt;/vertex&gt;&lt;/vertex&gt;&lt;/vertex&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;List&lt;edge&gt; l4 = new ArrayList&lt;edge&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; l4.add(e9); l4.add(e10); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; graph.put(d, l4);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.setDistance(Integer.MAX_VALUE);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.setName("e");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Edge e11 = new Edge(); Edge e12 = new Edge(); Edge e40 = new Edge();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e11.setToVertex(a); e11.setWeight(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e12.setToVertex(i); e12.setWeight(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e40.setToVertex(f); e40.setWeight(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&lt;edge&gt; l5 = new ArrayList&lt;edge&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; l5.add(e12); l5.add(e11); l5.add(e40);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; graph.put(e, l5);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.setDistance(0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.setName("f");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Edge e16 = new Edge(); Edge e17 = new Edge(); Edge e18 = new Edge();Edge e19 = new Edge();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e16.setToVertex(b); e16.setWeight(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e17.setToVertex(e); e17.setWeight(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e18.setToVertex(j); e18.setWeight(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e19.setToVertex(g); e19.setWeight(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&lt;edge&gt; l6 = new ArrayList&lt;edge&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; l6.add(e16); l6.add(e17); l6.add(e18); l6.add(e19);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; graph.put(f, l6);&lt;/edge&gt;&lt;/edge&gt;&lt;/edge&gt;&lt;/edge&gt;&lt;/edge&gt;&lt;/edge&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;g.setDistance(Integer.MAX_VALUE);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g.setName("g");&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Edge e20 = new Edge(); Edge e21 = new Edge(); Edge e22 = new Edge();Edge e23 = new Edge();&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e20.setToVertex(c); e20.setWeight(1);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e21.setToVertex(f); e21.setWeight(1);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e22.setToVertex(h); e22.setWeight(1);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e23.setToVertex(k); e23.setWeight(1);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&lt;edge&gt; l7 = new ArrayList&lt;edge&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; l7.add(e20); l7.add(e21); l7.add(e22); l7.add(e23);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; graph.put(g, l7);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.setDistance(Integer.MAX_VALUE);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.setName("h");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Edge e24 = new Edge(); Edge e25 = new Edge(); Edge e26 = new Edge();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e24.setToVertex(d); e24.setWeight(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e25.setToVertex(g); e25.setWeight(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e26.setToVertex(l); e26.setWeight(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&lt;edge&gt; l8 = new ArrayList&lt;edge&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; l8.add(e24); l8.add(e25); l8.add(e26); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; graph.put(h, l8);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i.setDistance(Integer.MAX_VALUE);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i.setName("i");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Edge e27 = new Edge(); Edge e28 = new Edge(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e27.setToVertex(e); e27.setWeight(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e28.setToVertex(j); e28.setWeight(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&lt;edge&gt; l9 = new ArrayList&lt;edge&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; l9.add(e27); l9.add(e28);&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; graph.put(i, l9);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; j.setDistance(Integer.MAX_VALUE);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; j.setName("j");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Edge e29 = new Edge(); Edge e30= new Edge(); Edge e31 = new Edge();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e29.setToVertex(f); e29.setWeight(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e30.setToVertex(i); e30.setWeight(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e31.setToVertex(k); e31.setWeight(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&lt;edge&gt; l10 = new ArrayList&lt;edge&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; l10.add(e29); l10.add(e30);&amp;nbsp; l10.add(e31);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; graph.put(j, l10);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; k.setDistance(Integer.MAX_VALUE);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; k.setName("k");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Edge e32 = new Edge(); Edge e33= new Edge(); Edge e34 = new Edge();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e32.setToVertex(g); e32.setWeight(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e33.setToVertex(j); e33.setWeight(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e34.setToVertex(l); e34.setWeight(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&lt;edge&gt; l11 = new ArrayList&lt;edge&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; l11.add(e32); l11.add(e33);&amp;nbsp; l11.add(e34);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; graph.put(k, l11);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; l.setDistance(Integer.MAX_VALUE);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; l.setName("l");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Edge e35 = new Edge(); Edge e36= new Edge(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e35.setToVertex(h); e35.setWeight(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e36.setToVertex(k); e36.setWeight(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&lt;edge&gt; l12 = new ArrayList&lt;edge&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; l12.add(e35); l12.add(e36);&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; graph.put(l, l12);&lt;/edge&gt;&lt;/edge&gt;&lt;/edge&gt;&lt;/edge&gt;&lt;/edge&gt;&lt;/edge&gt;&lt;/edge&gt;&lt;/edge&gt;&lt;/edge&gt;&lt;/edge&gt;&lt;/edge&gt;&lt;/edge&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;dijkstra dij = new dijkstra();&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dij.getSingleSourceShortestPath(f, graph);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Get node h&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Vertex v = l.getPredecessor();&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.print("Shortest path starts from l to f..in reverse order is..." + v.getName() + "&amp;nbsp; ");&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (v.getPredecessor() != null) {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.print(" , " + v.getPredecessor().getName());&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; v = v.getPredecessor();&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("\n");&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;}&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-4062248143884295792?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/4062248143884295792/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=4062248143884295792' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/4062248143884295792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/4062248143884295792'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2010/11/find-junction-having-gold.html' title='Find junction having GOLD'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-519250670687237897</id><published>2010-11-09T23:17:00.001-08:00</published><updated>2010-11-09T23:17:00.710-08:00</updated><title type='text'>Find if two lists are same</title><content type='html'>You are given two lists/arrays find if they are same&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-519250670687237897?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/519250670687237897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=519250670687237897' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/519250670687237897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/519250670687237897'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2010/11/find-if-two-lists-are-same.html' title='Find if two lists are same'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-1080905070682361689</id><published>2010-11-09T23:15:00.000-08:00</published><updated>2011-08-02T04:40:21.422-07:00</updated><title type='text'>Find duplicates in a array of elements</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;You are given an array of elements. Some/all of them are duplicates. Find them in 0(n) time and 0(1) space. Property of inputs - Number are in the range of 1..n where n is the limit of the array.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://github.com/inders/datastructure-repo/tree/master/finddupsinlineartime"&gt;GITHUB WORKING JAVA CODE..here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Algorithm -&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color: #6aa84f;"&gt;&amp;nbsp;&lt;span style="color: #444444;"&gt; &amp;nbsp;* 1. Read input from startPos&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;div style="color: #444444;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* 2. If input is within the maxRange or it's not in correct place then it's a candidate to be replaced else incrementStartPos&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #444444;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* 3. finalPosition for input is input[i]&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #444444;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* 4. if finalPosition &amp;lt; maxRange then swap input with finalPosition and increment finalPosition with MaxRange&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #444444;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* 5. else no need to swap as previous instances of this element are recorded at finalPos so just increment finalPosition with MaxRange to record another instance&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #444444;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* 6. if input at startPos is in correct place or reached zero then increment startPos++ till you go through end of Array&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #444444;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* 7. Iterate through the array and divide each element with maxRange. The divisor indicates how many times a element was repeated and 0 indicates a missing element&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Working JAVA Code -&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://datastructure-puzzles-codesolutions.blogspot.com/2011/02/find-duplicates-in-array-of-elements.html"&gt;http://datastructure-puzzles-codesolutions.blogspot.com/2011/02/find-duplicates-in-array-of-elements.html&lt;/a&gt;&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-1080905070682361689?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/1080905070682361689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=1080905070682361689' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/1080905070682361689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/1080905070682361689'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2010/11/find-duplicates-in-array-of-elements.html' title='Find duplicates in a array of elements'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-5446065145623576171</id><published>2010-11-07T10:10:00.001-08:00</published><updated>2010-11-20T23:55:57.495-08:00</updated><title type='text'>Find if a tree is a mirror of itself</title><content type='html'>Find if a tree is a mirror of itself. You can consider the tree to be a binary tree&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Approach1 : Tree will be a palindrome at each level. Do a level order traversal and check for palindrome and break &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Approach2 : Use a variant of recursive function for checking sameTree() instead of checking left and left, right and right. Check left with right and right with left.&lt;/b&gt;&lt;br /&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;Code using palindrome approach&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;------------------------------------------&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;import java.util.ArrayList;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;import java.util.List;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;public class BFS {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&lt;node&gt; nodeList = new ArrayList&lt;node&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&lt;node&gt; nodeList1 = new ArrayList&lt;node&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; List list, list1;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean isSymmetricTree(Node n) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // do a BFS traversal of this tree&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (n == null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //null is symmetric&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( n != null &amp;amp;&amp;amp; n.left == null &amp;amp;&amp;amp; n.right == null ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // only 1 node;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nodeList.add(n.left);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nodeList.add(n.right);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; list = nodeList;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; list1 = nodeList1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (list.size() &amp;gt; 0) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int count = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (count &amp;lt; list.size()) { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //System.out.println("Count = " + count + " list.size = " + list.size());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node tempNode = (Node)list.get(count);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (tempNode != null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //store it's left right&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (tempNode.getLeft() != null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; list1.add(tempNode.left);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (tempNode.getRight() != null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; list1.add(tempNode.right);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; count++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (isPalindrome(list) == false) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; emptyList(list);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&lt;long&gt; tmp = list;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; list = list1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; list1 = tmp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static void emptyList(List&lt;node&gt; nodeList) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (nodeList != null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nodeList.clear();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp; private static void printArray(Node[] nodes) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i =0; i &amp;lt; nodes.length; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println ( i + " th Node = [ " + nodes[i].getData() + "]");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private boolean isPalindrome(List&lt;node&gt; nodeList) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (nodeList == null || nodeList.size() == 0 )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node[] nodes = new Node[nodeList.size()];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nodeList.toArray(nodes);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //printArray(nodes);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //for it to be symmetric nodes.length should be an even number&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (nodes.length % 2 != 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("List size is not symmetric ..returning false");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int start = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int end = nodes.length - 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ( start &amp;lt; end) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //System.out.println("Comparing " + nodes[start].getData()&amp;nbsp; + nodes[start].getData());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (nodes[start].getData() == nodes[end].getData())&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; start++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end--;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //System.out.println("Comparing " + nodes[start].getData()&amp;nbsp; +&amp;nbsp; " " + nodes[start].getData() + " and returning false");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //System.out.println (" isPalindrome function returning true");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;}&lt;/node&gt;&lt;/node&gt;&lt;/long&gt;&lt;/node&gt;&lt;/node&gt;&lt;/node&gt;&lt;/node&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;public class Node {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Long data;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node left;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node right;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Node() {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Node(Long data) {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.data = data;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Long getData() {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return data;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void setData(Long data) {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.data = data;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Node getLeft() {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return left;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void setLeft(Node left) {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.left = left;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Node getRight() {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return right;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void setRight(Node right) {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.right = right;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;}&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;public class TreeTest {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void main(String[] args) {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Test case 1 what we discussed over the phone */&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node n =&amp;nbsp; FileUtils.constructTree();&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BFS bfs = new BFS();&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (bfs.isSymmetricTree(n))&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("------Tree is symmetric------");&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("-----Tree is asymmertric-------");&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(" ");System.out.println(" ");System.out.println(" ");&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("=============Second positive test case===============");&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n = new Node(1L);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node n1 = new Node(2L);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node n2 = new Node(2L);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node n3 = new Node(4L);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node n4 = new Node(4L);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n4.setLeft(null);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n4.setRight(null);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n3.setLeft(null);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n3.setRight(null);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n2.setLeft(null);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n2.setRight(n4);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n1.setLeft(n3);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n1.setRight(null);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n.setLeft(n1);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n.setRight(n2);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (bfs.isSymmetricTree(n))&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("------Tree is symmetric-------");&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("------Tree is asymmertric------");&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(" ");System.out.println(" ");System.out.println(" ");&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("=============Third negative test case===============");&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n = new Node(1L);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n1 = new Node(2L);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n2 = new Node(2L);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n3 = new Node(4L);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n4 = new Node(5L);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n4.setLeft(null);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n4.setRight(null);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n3.setLeft(null);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n3.setRight(null);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n2.setLeft(null);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n2.setRight(n4);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n1.setLeft(n3);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n1.setRight(null);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n.setLeft(n1);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n.setRight(n2);&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;if (bfs.isSymmetricTree(n))&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("Tree is symmetric");&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("------Tree is asymmertric------");&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;}&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Code using recursive Approach mentioned in Comment1&lt;/i&gt;&lt;br /&gt;&lt;i&gt;---------------------------------------------------------------------&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;public class TreeOps {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; class Node {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int data;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node left;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public int getData() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return data;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void setData(int data) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; this.data = data;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Node getLeft() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return left;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void setLeft(Node left) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; this.left = left;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Node getRight() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return right;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void setRight(Node right) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; this.right = right;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node right;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean isSymmetricTree(Node root) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (root == null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (root.getLeft() == null &amp;amp;&amp;amp; root.getRight() == null) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return isSymmetricTree(root.left, root.right);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private boolean isSymmetricTree(Node left, Node right) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (left == null &amp;amp;&amp;amp; right == null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if ((left == null &amp;amp;&amp;amp; right != null) ||&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; (left != null &amp;amp;&amp;amp; right == null))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return left.getData() == right.getData() &amp;amp;&amp;amp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; isSymmetricTree(left.getLeft(), right.getRight()) &amp;amp;&amp;amp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; isSymmetricTree(left.getRight(), right.getLeft());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void testIsSymmetricTreePositiveOne() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node n = new Node();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node n1 = new Node();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node n2 = new Node();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node n3 = new Node();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node n4 = new Node();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; n.setData(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; n1.setData(2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; n2.setData(2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; n3.setData(3);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; n4.setData(3);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; n.setLeft(n1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; n.setRight(n2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; n1.setLeft(n3);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; n1.setRight(null);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; n2.setRight(n4);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; n2.setLeft(null);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("testIsSymmetricTreePositiveOne&amp;nbsp; = [" +isSymmetricTree(n) + "]");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void testIsSymmetricTreePositiveTwo() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Node n = new Node();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Node n1 = new Node();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Node n2 = new Node();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Node n3 = new Node();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Node n4 = new Node();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Node n5 = new Node();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Node n6 = new Node();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; n.setData(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; n1.setData(2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; n2.setData(2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; n3.setData(3);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; n4.setData(3);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; n5.setData(4);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; n6.setData(4);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; n.setLeft(n1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; n.setRight(n2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; n1.setLeft(n3);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; n1.setRight(n5);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; n2.setRight(n4);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; n2.setLeft(n6);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("testIsSymmetricTreePositiveTwo&amp;nbsp; = [" +isSymmetricTree(n) + "]");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void testIsSymmetricTreeNegativeOne() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Node n = new Node();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Node n1 = new Node();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Node n2 = new Node();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Node n3 = new Node();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Node n4 = new Node();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Node n5 = new Node();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; n.setData(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; n1.setData(2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; n2.setData(2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; n3.setData(3);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; n4.setData(3);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; n5.setData(4);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; n.setLeft(n1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; n.setRight(n2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; n1.setLeft(n3);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; n1.setRight(n5);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; n2.setRight(n4);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("testIsSymmetricTreeNegativeOne&amp;nbsp; = [" +isSymmetricTree(n) + "]");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void main(String[] args) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; TreeOps t = new TreeOps();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; t.testIsSymmetricTreePositiveOne();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; t.testIsSymmetricTreePositiveTwo();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; t.testIsSymmetricTreeNegativeOne();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;}&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-5446065145623576171?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/5446065145623576171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=5446065145623576171' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/5446065145623576171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/5446065145623576171'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2010/11/find-if-tree-is-mirror-of-itself.html' title='Find if a tree is a mirror of itself'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-715770748462526291</id><published>2010-11-02T07:55:00.000-07:00</published><updated>2011-08-02T04:36:31.595-07:00</updated><title type='text'>an array contain +ve and -ve element, find subarray whose sum =0;</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;an array contain +ve and -ve element, find subarray whose sum =0;&lt;br /&gt;&lt;br /&gt;Lets take input array as a[]={-3,2,4,-6,-8,10,11}&lt;br /&gt;https://github.com/inders/datastructure-repo/tree/master/subarraywithsumzero/src&lt;br /&gt;&lt;br /&gt;&lt;a href="http://datastructure-puzzles-codesolutions.blogspot.com/2011/02/array-contain-ve-and-ve-element-find.html"&gt;Working JAVA Code is here&lt;/a&gt;&lt;br /&gt;&lt;a href="https://github.com/inders/datastructure-repo/tree/master/subarraywithsumzero/src"&gt;GITHUB Working Java Code&lt;/a&gt;&lt;br /&gt;&lt;a href="http://inder-gnu.blogspot.com/2010/11/array-contain-ve-and-ve-element-find.html?showComment=1289153327012#c3212516020242034190"&gt;Algorithm/Approach is here&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;b&gt;&lt;span style="color: #45818e;"&gt;How to think Approach &lt;/span&gt;&lt;/b&gt;&lt;a href="http://2.bp.blogspot.com/-EnYDK1lYSPs/TWd_bibUEUI/AAAAAAAAAb0/vdBAY75tW48/s1600/Picture+9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-EnYDK1lYSPs/TWd_bibUEUI/AAAAAAAAAb0/vdBAY75tW48/s1600/Picture+9.png" /&gt;&lt;/a&gt;&lt;/div&gt;Since it's easier to think pictorial imagine the cummulative sumarry of the original array in a X-Y corrdinate and you'll see if there are negative/postive numbers negating each others within a region your graph would go up/down and reach the same point after a while. So essentially you could have nested subarray as seen above in the smaller &lt;b&gt;&lt;span style="color: #cc0000;"&gt;RED&lt;/span&gt;&lt;/b&gt; line. Non overlapping such subarrays seen with the right side &lt;span style="color: #cc0000;"&gt;RED&lt;/span&gt; line. You are interested in the longest &lt;b&gt;&lt;span style="color: #cc0000;"&gt;RED&lt;/span&gt;&lt;/b&gt; line.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: #0b5394;"&gt;Approach&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;1. Store the sum of elements till that element in a separate array&lt;br /&gt;2. w.r.t to example in question our interim subarray would like &lt;br /&gt;-3, -1, 3, -3, -11, -1, 10&lt;br /&gt;&lt;br /&gt;3.  looking at the interim array you can observe a pattern that if an  element summed upto -3 at any index and there is another -3 at a further  index ( Since this being a cummulative summation array wherein the  summation started at -3 and then again went up and down and back to -3)  These two indexes have elements which are negating each other completely  and is one of the resultant set. You need to skip the element at head  index as that has contribution from previous summation also.&lt;br /&gt;&lt;br /&gt;You  can achieve the above by putting the indexes in a hash map and check for  collision's and use the start index and the current index as a  resultant set. &lt;br /&gt;&lt;br /&gt;So in out interim array&lt;br /&gt;-3, -1, 3, -3, -11, -1, 10&lt;br /&gt;&lt;br /&gt;-1, 3, -3 is one set and input elements = { 2, 4, -6}&lt;br /&gt;3, -3, -11, -1 is another and input elements = { 4, -6, -8, 10}   &lt;span class="comment-timestamp"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-715770748462526291?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/715770748462526291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=715770748462526291' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/715770748462526291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/715770748462526291'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2010/11/array-contain-ve-and-ve-element-find.html' title='an array contain +ve and -ve element, find subarray whose sum =0;'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-EnYDK1lYSPs/TWd_bibUEUI/AAAAAAAAAb0/vdBAY75tW48/s72-c/Picture+9.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-7197890064972753203</id><published>2010-11-02T07:12:00.001-07:00</published><updated>2010-11-02T07:12:31.524-07:00</updated><title type='text'>Minimum number of scales required</title><content type='html'>A company produces play ball of weights 0-25kg, 25-50kg, 50-75kg,  75-100kg. You  need to put the balls in four different buckets daily  depending on the number of ball company produces.BucketA (0-25kg),  BucketB (25-50kg), BucketC (50-75kg) and BucketD(75-100kg).&lt;br /&gt;A scale  is provided on which you can weigh only 1 ball at a time which has a  bulb. If the weight of the ball matches the scale category, the bulb  will light up otherwise it will be OFF. e.g. If scale is marked to  measure 10-25 kg, then any ball between 10 to 25kg (inclusive 10 and 25)  will switch on the bulb and say if you weigh 26 it wont switch on the  bulb. The cost of scale is 1 million dollar.&lt;br /&gt;Question: You need to  find the minimum number you will use to do the job.Also what is weight  category you will choose for the scales to do the job.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-7197890064972753203?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/7197890064972753203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=7197890064972753203' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/7197890064972753203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/7197890064972753203'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2010/11/minimum-number-of-scales-required.html' title='Minimum number of scales required'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-66546378614329022</id><published>2010-11-02T07:02:00.001-07:00</published><updated>2010-11-02T07:02:11.079-07:00</updated><title type='text'>Tie ropes in min cost</title><content type='html'>you are given n ropes,maybe of different length. the cost of tying two ropes is the sum of their lengths.Find a way to tie these ropes together so that the cost is minimum.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-66546378614329022?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/66546378614329022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=66546378614329022' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/66546378614329022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/66546378614329022'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2010/11/tie-ropes-in-min-cost.html' title='Tie ropes in min cost'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-8111614658264379448</id><published>2010-11-02T06:50:00.001-07:00</published><updated>2010-11-02T06:50:59.370-07:00</updated><title type='text'>Data structure to support Push, Pop and GetMin in O(1)</title><content type='html'>Implement a data structure similar to stack which supports Push, Pop and GetMin in O(1)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-8111614658264379448?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/8111614658264379448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=8111614658264379448' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/8111614658264379448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/8111614658264379448'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2010/11/data-structure-to-support-push-pop-and.html' title='Data structure to support Push, Pop and GetMin in O(1)'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-1689435230465932409</id><published>2010-11-02T06:25:00.000-07:00</published><updated>2010-11-02T06:25:15.777-07:00</updated><title type='text'>find maximum interval across two arrays</title><content type='html'>We are given with two arrays A and B..each of size N...elements of array contains either 1 or 0...&lt;br /&gt;we have to find such an interval (p,q)(inclusive) such that the sum of all the elements of A (between this interval) and sum of all elements of B (between this interval ) is equal...&lt;br /&gt;i.e.&lt;br /&gt;a[p]+a[p+1]....+a[q]= b[p]+b[p+1]....+b[q]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-1689435230465932409?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/1689435230465932409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=1689435230465932409' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/1689435230465932409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/1689435230465932409'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2010/11/find-maximum-interval-across-two-arrays.html' title='find maximum interval across two arrays'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-6713033581109492517</id><published>2010-07-24T02:43:00.000-07:00</published><updated>2010-07-24T02:50:16.465-07:00</updated><title type='text'>An Ant Antic</title><content type='html'>&lt;div&gt;A 5 feel pole is so place that its ends rest on 2 buckets , one filled with sugar and the other with cream. Some ants are dropped randomly(wrt the point of drop)  on the pole and they start running towards the left or right directions. If 2 ants hit each other they reverse their direction instantaneously and start moving again. If an ant reaches the either end of the pole it jumps into the bucket at that end to bask in heavenly sweetness.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If they travel at 1 inch/second how long will it take for all ants to fall off ?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-6713033581109492517?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/6713033581109492517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=6713033581109492517' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/6713033581109492517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/6713033581109492517'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2010/07/ant-antic.html' title='An Ant Antic'/><author><name>5vd33p74</name><uri>http://www.blogger.com/profile/13209074557555210575</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-8965120926552818435</id><published>2010-04-19T00:29:00.001-07:00</published><updated>2010-04-19T00:29:37.189-07:00</updated><title type='text'>Arrange players in relative order</title><content type='html'>You have 'n' players who have played against each other and for each player you have 2 sets&lt;br /&gt;Win = { } Loose = { } which tells you what all players has a given player lost/won against.&lt;br /&gt;&lt;br /&gt;You need to arrange them in such a way that player's to left of each in final result should be winner's and to &amp;nbsp;the right losers for a player.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-8965120926552818435?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/8965120926552818435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=8965120926552818435' title='25 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/8965120926552818435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/8965120926552818435'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2010/04/arrange-players-in-relative-order.html' title='Arrange players in relative order'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>25</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-1017982962082153416</id><published>2010-04-19T00:26:00.001-07:00</published><updated>2010-04-19T00:26:52.995-07:00</updated><title type='text'>Longest increasing subsequence in chain of numbers</title><content type='html'>Find out the the longest increasing subsequence in a sequence of 'n' numbers.&lt;br /&gt;eg: 1, 5, 3, 2, 100&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-1017982962082153416?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/1017982962082153416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=1017982962082153416' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/1017982962082153416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/1017982962082153416'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2010/04/longest-increasing-subsequence-in-chain.html' title='Longest increasing subsequence in chain of numbers'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-3821637131510107820</id><published>2010-04-19T00:25:00.000-07:00</published><updated>2010-04-19T00:25:26.760-07:00</updated><title type='text'>Ways to climb steps</title><content type='html'>you have 'n' steps and a person who wants to reach step 'n' currently standing at step1. What are the possible ways he can do that provided he can either take 1/2 steps at a time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-3821637131510107820?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/3821637131510107820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=3821637131510107820' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/3821637131510107820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/3821637131510107820'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2010/04/ways-to-climb-steps.html' title='Ways to climb steps'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-5506648767938743047</id><published>2010-04-01T23:19:00.000-07:00</published><updated>2010-04-01T23:19:01.181-07:00</updated><title type='text'>Partition array in k ranges to minimize the maximum sum over all ranges</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px;"&gt;&lt;div style="font-family: Times; font-size: medium;"&gt;A given arrangement&amp;nbsp;&lt;em&gt;S&lt;/em&gt;&amp;nbsp;of non-negative numbers&amp;nbsp;&amp;nbsp;and an integer&amp;nbsp;&lt;em&gt;k&lt;/em&gt;.&lt;/div&gt;&lt;div style="font-family: Times; font-size: medium;"&gt;&lt;em&gt;Output:&lt;/em&gt;&amp;nbsp;Partition&amp;nbsp;&lt;em&gt;S&lt;/em&gt;&amp;nbsp;into&amp;nbsp;&lt;em&gt;k&lt;/em&gt;&amp;nbsp;ranges, so as to minimize the maximum sum over all the ranges. This so-called&amp;nbsp;&lt;em&gt;linear partition&lt;/em&gt;&amp;nbsp;problem arises often in parallel processing, since we seek to balance the work done across processors so as to minimize the total elapsed run time. Indeed, the war story of Section&amp;nbsp;&lt;a href="http://www.blogger.com/BOOK3/NODE101.HTM#parallelwaring"&gt;&lt;img align="BOTTOM" alt="gif" src="../../ICONS/CROSOTIF.GIF" /&gt;&lt;/a&gt;&amp;nbsp;revolves around a botched solution to this problem.&lt;/div&gt;&lt;div style="font-family: Times; font-size: medium;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Times; font-size: medium;"&gt;Application -&amp;nbsp;Suppose that three workers are given the task of scanning through a shelf of books in search of a given piece of information. To get the job done fairly and efficiently, the books are to be partitioned among the three workers. To avoid the need to rearrange the books or separate them into piles, it would be simplest to divide the shelf into three regions and assign each region to one worker.&amp;nbsp;&lt;a href="" name="2151"&gt;&amp;nbsp;&lt;/a&gt;&lt;a href="" name="2152"&gt;&amp;nbsp;&lt;/a&gt;&amp;nbsp;&lt;a href="" name="2153"&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Times; font-size: medium;"&gt;But what is the fairest way to divide the shelf up? If each book is the same length, say 100 pages, the job is pretty easy. Just partition the books into equal-sized regions,&lt;/div&gt;&lt;div style="font-family: Times; font-size: medium;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Times; font-size: medium;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Times; font-size: medium;"&gt;so that everyone has 300 pages to deal with.&lt;/div&gt;&lt;div style="font-family: Times; font-size: medium;"&gt;But what if the books are not the same length?&amp;nbsp;&lt;/div&gt;&lt;div style="font-family: Times; font-size: medium;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-5506648767938743047?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/5506648767938743047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=5506648767938743047' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/5506648767938743047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/5506648767938743047'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2010/04/partition-array-in-k-ranges-to-minimize.html' title='Partition array in k ranges to minimize the maximum sum over all ranges'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-5320558753386733710</id><published>2010-04-01T21:43:00.001-07:00</published><updated>2010-04-01T21:43:48.598-07:00</updated><title type='text'>Minimum number of coins to make change</title><content type='html'>&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;You are given n types of coin denominations of values v(1) &amp;lt; v(2) &amp;lt; ... &amp;lt; 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&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-5320558753386733710?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/5320558753386733710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=5320558753386733710' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/5320558753386733710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/5320558753386733710'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2010/04/minimum-number-of-coins-to-make-change.html' title='Minimum number of coins to make change'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-7328703860056940263</id><published>2010-03-26T00:27:00.001-07:00</published><updated>2010-03-26T00:27:58.259-07:00</updated><title type='text'>Arrange numbers in decreasing order of their frequency</title><content type='html'>&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 18px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; clear: both; font-size: 14px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline; word-wrap: break-word;"&gt;Input :&amp;nbsp;&lt;code style="background-attachment: initial; background-clip: initial; background-color: #eeeeee; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 1px; padding-left: 5px; padding-right: 5px; padding-top: 1px; vertical-align: baseline;"&gt;{5, 13, 6, 5, 13, 7, 8, 6, 5}&lt;/code&gt;&lt;/div&gt;&lt;div style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; clear: both; font-size: 14px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline; word-wrap: break-word;"&gt;Output :&amp;nbsp;&lt;code style="background-attachment: initial; background-clip: initial; background-color: #eeeeee; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 1px; padding-left: 5px; padding-right: 5px; padding-top: 1px; vertical-align: baseline;"&gt;{5, 5, 5, 13, 13, 6, 6, 7, 8}&lt;/code&gt;&lt;/div&gt;&lt;div style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; clear: both; font-size: 14px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline; word-wrap: break-word;"&gt;The question is to arrange the numbers in the array in decreasing order of their frequency, preserving the order of their occurrence.&lt;/div&gt;&lt;div style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; clear: both; font-size: 14px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline; word-wrap: break-word;"&gt;If there is a tie, like in this example between 13 and 6, then the number occurring first in the input array would come first in the output array.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-7328703860056940263?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/7328703860056940263/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=7328703860056940263' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/7328703860056940263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/7328703860056940263'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2010/03/arrange-numbers-in-decreasing-order-of.html' title='Arrange numbers in decreasing order of their frequency'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-6941711578031234935</id><published>2010-03-24T02:00:00.000-07:00</published><updated>2010-03-24T02:00:53.472-07:00</updated><title type='text'>Design an algorithm for an automated parking lot</title><content type='html'>You have a set of parking slots along with the distance from entrance, you need to devise an algorithm to support the following operations&lt;br /&gt;&lt;br /&gt;1. Figure out a nearest free parking slot in the quickest way&lt;br /&gt;2. Figure out where the car is parked for a valet to take it out in the quickest way.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-6941711578031234935?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/6941711578031234935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=6941711578031234935' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/6941711578031234935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/6941711578031234935'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2010/03/design-algorithm-for-automated-parking.html' title='Design an algorithm for an automated parking lot'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-3959891860756457171</id><published>2010-03-23T06:46:00.000-07:00</published><updated>2010-03-23T06:46:21.946-07:00</updated><title type='text'>Design an algorithm for optical character reading</title><content type='html'>Assuming you have been given some very old papers which are scanned as JPG images.&lt;br /&gt;You have been asked to write a program which can read those images and identify lines in the same.&lt;br /&gt;Trick lies in the fact that the lines could have negative/positive slopes as they are old documents.&lt;br /&gt;&lt;br /&gt;Source - Algorithm design manual by Stevens&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-3959891860756457171?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/3959891860756457171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=3959891860756457171' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/3959891860756457171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/3959891860756457171'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2010/03/design-algorithm-for-optical-character.html' title='Design an algorithm for optical character reading'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-5375947021106550297</id><published>2010-03-23T06:43:00.001-07:00</published><updated>2010-03-23T06:43:41.643-07:00</updated><title type='text'>How would you design an elevator algorithm</title><content type='html'>How would you design an elevator algorithm&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-5375947021106550297?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/5375947021106550297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=5375947021106550297' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/5375947021106550297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/5375947021106550297'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2010/03/how-would-you-design-elevator-algorithm.html' title='How would you design an elevator algorithm'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-1755788172617215380</id><published>2010-03-22T01:08:00.000-07:00</published><updated>2010-03-22T01:08:55.459-07:00</updated><title type='text'>find row with minumum 0's</title><content type='html'>You have a matrix with 0 &amp;amp; 1 with rows being in sorted order. Find the row with minimum number of 1's&lt;br /&gt;&lt;br /&gt;0 0 0 1 1&lt;br /&gt;0 0 1 1 1&lt;br /&gt;0 1 1 1 1&lt;br /&gt;0 0 1 1 1&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-1755788172617215380?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/1755788172617215380/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=1755788172617215380' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/1755788172617215380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/1755788172617215380'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2010/03/find-row-with-minumum-0s.html' title='find row with minumum 0&apos;s'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-1862743049055136870</id><published>2010-03-18T01:16:00.001-07:00</published><updated>2010-03-18T01:16:53.638-07:00</updated><title type='text'>Find overlapping pairs</title><content type='html'>You are given the following pairs&lt;br /&gt;[1,3] [2,4] [5,8]&lt;br /&gt;&lt;br /&gt;Output should be the following&lt;br /&gt;[1,4][5,8]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-1862743049055136870?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/1862743049055136870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=1862743049055136870' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/1862743049055136870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/1862743049055136870'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2010/03/find-overlapping-pairs.html' title='Find overlapping pairs'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-257458431116428698</id><published>2010-03-09T02:48:00.001-08:00</published><updated>2010-03-09T02:48:37.872-08:00</updated><title type='text'>Map rectangles to plane</title><content type='html'>&lt;em&gt;In my graphics work I need to solve the following problem. Given an arbitrary set of rectangles in the plane, how can I distribute them into a minimum number of buckets such that the subset of rectangles in the same bucket do not intersect each other? In other words, there should not be any overlapping area between any two rectangles in the same bucket.'&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-257458431116428698?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/257458431116428698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=257458431116428698' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/257458431116428698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/257458431116428698'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2010/03/map-rectangles-to-plane.html' title='Map rectangles to plane'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-5261765904701490116</id><published>2010-03-09T02:43:00.000-08:00</published><updated>2010-03-09T02:43:17.669-08:00</updated><title type='text'>Formulate a way to detect tax fraud</title><content type='html'>&lt;em&gt;In organized tax fraud, criminals submit groups of phony tax returns in the hopes of getting undeserved refunds. These phony returns are all similar, but not identical. How can we detect clusters of similar forms so the IRS can nail the cheaters&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;Assumptions -&amp;gt; You can assume that there is a mechanism of detecting&amp;nbsp;identical&amp;nbsp;forms given.&amp;nbsp;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;How will formulate this problem to solve it&amp;nbsp;efficiently.&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-5261765904701490116?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/5261765904701490116/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=5261765904701490116' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/5261765904701490116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/5261765904701490116'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2010/03/formulate-way-to-detect-tax-fraud.html' title='Formulate a way to detect tax fraud'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-5687723823340522494</id><published>2010-03-09T02:26:00.000-08:00</published><updated>2010-03-09T02:26:14.354-08:00</updated><title type='text'>Porting code from DOS to UNIX</title><content type='html'>&lt;em&gt;In porting code from UNIX to DOS, I have to shorten the names of several hundred files down to at most 8 characters each. I can't just take the first eight characters from each name, because ``filename1'' and ``filename2'' will get assigned the exact same name. How can I shorten the names while ensuring that they do not collide?''&amp;nbsp;&lt;a href="" name="3697"&gt;&amp;nbsp;&lt;/a&gt;&lt;a href="" name="3698"&gt;&amp;nbsp;&lt;/a&gt;&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-5687723823340522494?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/5687723823340522494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=5687723823340522494' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/5687723823340522494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/5687723823340522494'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2010/03/porting-code-from-dos-to-unix.html' title='Porting code from DOS to UNIX'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-1586803155624911876</id><published>2010-02-17T21:55:00.000-08:00</published><updated>2010-02-17T21:55:11.234-08:00</updated><title type='text'>Find median of two sorted Lists</title><content type='html'>&lt;span class="Apple-style-span" style="color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 19px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-color: #fafafa; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; overflow-x: auto; overflow-y: auto; padding-bottom: 10px; padding-left: 20px; padding-right: 20px; padding-top: 10px;"&gt;l1 = [1, 4, 5, 7, 7, 8, 9, 9]&lt;br /&gt;l2 = [0, 1, 3, 6, 6, 6, 7, 8]&lt;/pre&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-color: #fafafa; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; overflow-x: auto; overflow-y: auto; padding-bottom: 10px; padding-left: 20px; padding-right: 20px; padding-top: 10px;"&gt;You have the above two lists, find the median among them&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-1586803155624911876?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/1586803155624911876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=1586803155624911876' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/1586803155624911876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/1586803155624911876'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2010/02/find-median-of-two-sorted-lists.html' title='Find median of two sorted Lists'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-7899113775200715477</id><published>2010-01-11T09:28:00.000-08:00</published><updated>2010-01-11T09:30:26.182-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OCW'/><category scheme='http://www.blogger.com/atom/ns#' term='algorithms'/><category scheme='http://www.blogger.com/atom/ns#' term='unimodal'/><category scheme='http://www.blogger.com/atom/ns#' term='search'/><title type='text'>Unimodal Search</title><content type='html'>An array &lt;span style="font-family: courier new,monospace;"&gt;A[1...n]&lt;/span&gt; is &lt;b&gt;unimodal&lt;/b&gt; if it consists of an increasing sequence followed by a decreasing sequence. More precisely, if there is an index &lt;span style="font-family: comic sans ms,sans-serif;"&gt;m&lt;/span&gt; in &lt;span style="font-family: courier new,monospace;"&gt;{1, 2, ... n}&lt;/span&gt; such that&lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;A[i] &amp;lt; A[i+1] &lt;span style="font-family: arial,helvetica,sans-serif;"&gt;for&lt;/span&gt; 1 &amp;lt;= i &amp;lt; m&lt;/span&gt; and&lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;A[i] &amp;gt; A[i+1] &lt;span style="font-family: arial,helvetica,sans-serif;"&gt;for&lt;/span&gt; m &amp;lt;= i &amp;lt; n&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In particular, &lt;span style="font-family: courier new,monospace;"&gt;A[m]&lt;/span&gt; is the maximum element, and it is the unique "locally maximum" element surrounded by smaller elements.&lt;br /&gt;&lt;br /&gt;Give an algorithm to compute the maximum element of a unimodal input array &lt;span style="font-family: courier new,monospace;"&gt;A[1...n]&lt;/span&gt; in &lt;span style="font-family: courier new,monospace;"&gt;O(lg n)&lt;/span&gt; time.&lt;br /&gt;&lt;br /&gt;Source: &lt;a href="http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-046JFall-2005/Assignments/index.htm"&gt;Problem 1-3.from MIT OpenCourseWare Course - 6.046J / 18.410J Introduction to Algorithms (SMA 5503)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-7899113775200715477?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/7899113775200715477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=7899113775200715477' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/7899113775200715477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/7899113775200715477'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2010/01/unimodal-search.html' title='Unimodal Search'/><author><name>Madhur Kumar Tanwani</name><uri>http://www.blogger.com/profile/05009478527695401190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_YpQDTB43-wc/SnR4t4ECpQI/AAAAAAAAAHw/GIUcS5biCWM/S220/madhur-full.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-429323671901232882</id><published>2009-12-01T10:32:00.001-08:00</published><updated>2010-11-21T06:58:32.450-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='binary trees'/><category scheme='http://www.blogger.com/atom/ns#' term='data structures'/><category scheme='http://www.blogger.com/atom/ns#' term='recurrsion'/><category scheme='http://www.blogger.com/atom/ns#' term='trees'/><title type='text'>Is Binary Search Tree</title><content type='html'>Given a binary tree, verify if it is Binary Search Tree&lt;br /&gt;&lt;br /&gt;Approach which can do this in O(n) will have to track min, max and at each node check whether it's in range of min, max.&lt;br /&gt;&lt;br /&gt;1. Root left will be in range of min=0, root.data (as elements in root left subtree) should be within this range&lt;br /&gt;2. now root.left.left should be range of min=0 to root.left.data ( as it's subtree should be all all elements less than this)&lt;br /&gt;3. root.right will be in range min=root.data to MAX&lt;br /&gt;4. at step2 if root.left has right subtree also then it will be in range of root.left.data to MAX=root.data as root.left.right subtree should have everything greater than root.left and should be less than root.data&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;Java Code&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #0b5394;"&gt;&lt;i&gt;-------------&lt;/i&gt;&lt;/div&gt;&lt;i style="color: #0b5394;"&gt;public boolean isBST(Node root, Long currMin, Long currMax) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (root == null) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(root.getData() &amp;lt; currMin ||&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; root.getData() &amp;gt; currMax)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return (isBST(root.getLeft(), currMin, root.getNodeData()) &amp;amp;&amp;amp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; isBST(root.getRight(), root.getNodeData(), currMax));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-429323671901232882?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/429323671901232882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=429323671901232882' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/429323671901232882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/429323671901232882'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/12/algo-is-binary-search-tree.html' title='Is Binary Search Tree'/><author><name>Madhur Kumar Tanwani</name><uri>http://www.blogger.com/profile/05009478527695401190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_YpQDTB43-wc/SnR4t4ECpQI/AAAAAAAAAHw/GIUcS5biCWM/S220/madhur-full.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-6398309975202928148</id><published>2009-11-30T10:31:00.001-08:00</published><updated>2009-11-30T10:33:59.586-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='algorithms'/><category scheme='http://www.blogger.com/atom/ns#' term='recurrsion'/><category scheme='http://www.blogger.com/atom/ns#' term='backtracking'/><category scheme='http://www.blogger.com/atom/ns#' term='matrix'/><title type='text'>Find the string in 2 dimensional matrix</title><content type='html'>Given a 2-dim matrix of characters 'm' and a string 's' - find if the string 's' is present in the matrix. Only characters in the neighboring cells of a cell can contribute to the string.&lt;br /&gt;&lt;br /&gt;For example, for the case below B,D,F,G are neighbors of X. From 'X' possible strings (or substrings) are XB, XD, XF, XH. &lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;|-----|-----&lt;/span&gt;&lt;span style="font-family: courier new,monospace;"&gt;|-----|&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;|&amp;nbsp; A&amp;nbsp; |&amp;nbsp; B&amp;nbsp; |&amp;nbsp; C&amp;nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;|-----|-----&lt;/span&gt;&lt;span style="font-family: courier new,monospace;"&gt;|-----|&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;|&amp;nbsp; H&amp;nbsp; |&amp;nbsp; &lt;b&gt;X&lt;/b&gt;&amp;nbsp; |&amp;nbsp; D&amp;nbsp; |&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,monospace;"&gt;|-----|-----&lt;/span&gt;&lt;span style="font-family: courier new,monospace;"&gt;|-----|&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;|&amp;nbsp; G&amp;nbsp; |&amp;nbsp; F&amp;nbsp; |&amp;nbsp; E&amp;nbsp; |&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,monospace;"&gt;|-----|-----&lt;/span&gt;&lt;span style="font-family: courier new,monospace;"&gt;|-----|&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Finally, an example. Given the matrix &lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;(0,0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |-----|-----&lt;/span&gt;&lt;span style="font-family: courier new,monospace;"&gt;|-----|-----|&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp; y&amp;nbsp; |&amp;nbsp; a&amp;nbsp; |&amp;nbsp; a&amp;nbsp; |&amp;nbsp; o&amp;nbsp; |&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |-----|-----&lt;/span&gt;&lt;span style="font-family: courier new,monospace;"&gt;|-----|-----|&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp; a&amp;nbsp; |&amp;nbsp; o&amp;nbsp; |&amp;nbsp; a&amp;nbsp; |&amp;nbsp; o&amp;nbsp; |&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |-----|-----&lt;/span&gt;&lt;span style="font-family: courier new,monospace;"&gt;|-----|-----|&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp; y&amp;nbsp; |&amp;nbsp; a&amp;nbsp; |&amp;nbsp; o&amp;nbsp; |&amp;nbsp; o&amp;nbsp; |&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |-----|-----&lt;/span&gt;&lt;span style="font-family: courier new,monospace;"&gt;|-----|-----|&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp; h&amp;nbsp; |&amp;nbsp; a&amp;nbsp; |&amp;nbsp; a&amp;nbsp; |&amp;nbsp; o&amp;nbsp; |&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |-----|-----&lt;/span&gt;&lt;span style="font-family: courier new,monospace;"&gt;|-----|-----|&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp; y&amp;nbsp; |&amp;nbsp; a&amp;nbsp; |&amp;nbsp; h&amp;nbsp; |&amp;nbsp; o&amp;nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |-----|-----&lt;/span&gt;&lt;span style="font-family: courier new,monospace;"&gt;|-----|-----|&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (3,3)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and asked to check for the string 'yahoo' the solution is &lt;span style="font-family: courier new,monospace;"&gt;true&lt;/span&gt; : &lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;y - (3,0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;a&lt;/span&gt;&lt;span style="font-family: courier new,monospace;"&gt; - (3,1)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;h&lt;/span&gt;&lt;span style="font-family: courier new,monospace;"&gt; - (3,2)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;o&lt;/span&gt;&lt;span style="font-family: courier new,monospace;"&gt; - (3,3)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;o&lt;/span&gt;&lt;span style="font-family: courier new,monospace;"&gt; - (2,3)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-6398309975202928148?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/6398309975202928148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=6398309975202928148' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/6398309975202928148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/6398309975202928148'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/11/algo-find-string-in-2-dimensional.html' title='Find the string in 2 dimensional matrix'/><author><name>Madhur Kumar Tanwani</name><uri>http://www.blogger.com/profile/05009478527695401190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_YpQDTB43-wc/SnR4t4ECpQI/AAAAAAAAAHw/GIUcS5biCWM/S220/madhur-full.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-9110111024785291490</id><published>2009-11-30T10:13:00.001-08:00</published><updated>2009-11-30T10:14:48.811-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='algorithms'/><category scheme='http://www.blogger.com/atom/ns#' term='probability'/><category scheme='http://www.blogger.com/atom/ns#' term='randomized'/><title type='text'>Random number generator, with equal probability</title><content type='html'>&lt;span style="font-family: courier new,monospace;"&gt;RANDOM(a.b)&lt;/span&gt; is a random number generator that generates integers between a and b (inclusive), all equally likely.&lt;br /&gt;&lt;br /&gt;Assuming we have an implementation of &lt;span style="font-family: courier new,monospace;"&gt;RANDOM(0.1)&lt;/span&gt;, how can we implement &lt;span style="font-family: courier new,monospace;"&gt;RANDOM(a.b)&lt;/span&gt; - i.e. given we have a function that returns &lt;b&gt;&lt;span style="font-family: courier new,monospace;"&gt;0&lt;/span&gt;&lt;/b&gt; OR &lt;b style="font-family: courier new,monospace;"&gt;1&lt;/b&gt; both with a probability of &lt;b&gt;&lt;span style="font-family: courier new,monospace;"&gt;1/2&lt;/span&gt;&lt;/b&gt;, how can we implement a function that returns integers from &lt;b&gt;&lt;span style="font-family: courier new,monospace;"&gt;a&lt;/span&gt;&lt;/b&gt; to &lt;b style="font-family: courier new,monospace;"&gt;b&lt;/b&gt; (&lt;b style="font-family: courier new,monospace;"&gt;b&lt;/b&gt; &amp;gt; &lt;b style="font-family: courier new,monospace;"&gt;a&lt;/b&gt;), all with a probability of &lt;b style="font-family: courier new,monospace;"&gt;1/n&lt;/b&gt;, where &lt;b&gt;&lt;span style="font-family: courier new,monospace;"&gt;n = (b-a+1)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Source : Cormen - Problem 5.1-2 (randomized algorithms)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Similar problem : &lt;br /&gt;At a restaurant, how can Veronica choose one out of three desserts with equal probability with the help of a coin?&lt;br /&gt;&lt;br /&gt;Its on Gurmeet's site here&amp;nbsp; &lt;a href="http://gurmeetsingh.wordpress.com/2008/09/12/puzzle-tossing-with-one-third-probability/"&gt;http://gurmeetsingh.wordpress.com/2008/09/12/puzzle-tossing-with-one-third-probability/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-9110111024785291490?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/9110111024785291490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=9110111024785291490' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/9110111024785291490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/9110111024785291490'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/11/algo-random-number-generator-with-equal.html' title='Random number generator, with equal probability'/><author><name>Madhur Kumar Tanwani</name><uri>http://www.blogger.com/profile/05009478527695401190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_YpQDTB43-wc/SnR4t4ECpQI/AAAAAAAAAHw/GIUcS5biCWM/S220/madhur-full.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-6069241380834914468</id><published>2009-11-17T10:45:00.000-08:00</published><updated>2009-11-17T10:45:21.931-08:00</updated><title type='text'>Web consistent Caching</title><content type='html'>you have enormous data in format key=val which needs to be cached in multiple web servers for fast look up. You could later on add servers for scaling up throughput/decrease latency or adding new data in which case some data from older caches could move to new. What's the best way to achieve this?&lt;br /&gt;&lt;br /&gt;Good Link - http://www8.org/w8-papers/2a-webserver/caching/paper2.html#ch&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-6069241380834914468?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/6069241380834914468/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=6069241380834914468' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/6069241380834914468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/6069241380834914468'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/11/web-consistent-caching.html' title='Web consistent Caching'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-8001292012699028068</id><published>2009-09-21T11:36:00.000-07:00</published><updated>2009-09-21T11:36:00.739-07:00</updated><title type='text'>Number guessing game</title><content type='html'>Shankar chooses a number between 1 and 10,000. Geeta has to guess the chosen number as quickly as possible. Shankar will let Geeta know whether her guess is smaller than, larger than or equal to the number. The caveat is that Geeta loses the game if her guess is larger than Shankar’s chosen number two or more times. (A) How many guesses are necessary? (B) What if Shankar is allowed to pick an arbitrarily large positive number?&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Source - http://gurmeetsingh.wordpress.com/puzzles/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-8001292012699028068?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/8001292012699028068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=8001292012699028068' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/8001292012699028068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/8001292012699028068'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/09/number-guessing-game.html' title='Number guessing game'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-4132041648463399359</id><published>2009-09-14T11:07:00.000-07:00</published><updated>2009-09-14T11:07:56.525-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='graph theory'/><title type='text'>How long will it take for my gossip to get back to me</title><content type='html'>I am on yahoo mail and start a forward thread to all my contacts. How long will it take for the same gossip to travel back to me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-4132041648463399359?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/4132041648463399359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=4132041648463399359' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/4132041648463399359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/4132041648463399359'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/09/how-long-will-it-take-for-my-gossip-to.html' title='How long will it take for my gossip to get back to me'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-5669705998264293279</id><published>2009-09-13T10:09:00.000-07:00</published><updated>2009-09-13T10:10:35.050-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='transitive correlation'/><category scheme='http://www.blogger.com/atom/ns#' term='sets'/><title type='text'>Transitive set correlation</title><content type='html'>You have a large file of the following format&lt;br /&gt;&lt;br /&gt;s1 =&amp;gt; s2&lt;br /&gt;s3 =&amp;gt; s7&lt;br /&gt;s9 =&amp;gt; s15&lt;br /&gt;s1 =&amp;gt; s3&lt;br /&gt;s3 =&amp;gt; s4&lt;br /&gt;s15 =&amp;gt; s16&lt;br /&gt;......&lt;br /&gt;......&lt;br /&gt;......&lt;br /&gt;&lt;br /&gt;You need to arrange them in a transitive correlated set. Let me take a step back so that you digest this.&lt;br /&gt;In the above example the end result should be following&lt;br /&gt;&lt;br /&gt;(s1, s2, s3, s4, s7)&lt;br /&gt;(s9, s15, s16)&lt;br /&gt;&lt;br /&gt;What's the best time &amp;amp; space complexity in which you can achieve this?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-5669705998264293279?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/5669705998264293279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=5669705998264293279' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/5669705998264293279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/5669705998264293279'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/09/transitive-set-correlation.html' title='Transitive set correlation'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-2477855339686181189</id><published>2009-09-13T09:44:00.000-07:00</published><updated>2009-09-13T10:03:30.171-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='find celebrity'/><category scheme='http://www.blogger.com/atom/ns#' term='puzzle'/><category scheme='http://www.blogger.com/atom/ns#' term='statergy'/><title type='text'>Find the celebrity</title><content type='html'>You are in a party which has 'n' guests. One of them being a celebrity which meets the following criteria.&lt;br /&gt;&lt;br /&gt;1. Celebrity doesn't know anyone&lt;br /&gt;2. All others except the celebrity know atleast one person including the celebrity.&lt;br /&gt;&lt;br /&gt;You are allowed to ask any person - DO YOU KNOW X person.&lt;br /&gt;How many questions you need to identify the celebrity&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-2477855339686181189?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/2477855339686181189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=2477855339686181189' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/2477855339686181189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/2477855339686181189'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/09/find-celebrity.html' title='Find the celebrity'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-8361462861592981350</id><published>2009-09-06T03:35:00.001-07:00</published><updated>2009-09-06T03:37:57.084-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='walk the bridge'/><category scheme='http://www.blogger.com/atom/ns#' term='riddle'/><category scheme='http://www.blogger.com/atom/ns#' term='problem solving'/><title type='text'>Walk the bridge, in paris as fast a possible</title><content type='html'>There are 4 women who want to cross a bridge. They all begin on the same side.                  There is one flashlight. A maximum of two people can cross at one time.&amp;nbsp; It is night. Any                  party who crosses, either 1 or 2 people, must have the flashlight with them.                  The flashlight must be walked back and forth, it cannot be thrown, etc. Each                  woman walks at a different speed. A pair must walk together at the rate of the                  slower woman's pace.                 &lt;br /&gt;Woman 1: 1 minute to cross                     &lt;br /&gt;Woman 2: 2 minutes to cross                     &lt;br /&gt;Woman 3: 5 minutes to cross                     &lt;br /&gt;Woman 4: 10 minutes to cross                     &lt;br /&gt;&lt;br /&gt;For example if Woman 1 and Woman 4 walk across first, 10 minutes have elapsed                      when they get to the other side of the bridge. If Woman 4 then returns with the                      flashlight, a total of 20 minutes have passed and you have failed the mission.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-8361462861592981350?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/8361462861592981350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=8361462861592981350' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/8361462861592981350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/8361462861592981350'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/09/walk-bridge-in-paris-as-fast-possible.html' title='Walk the bridge, in paris as fast a possible'/><author><name>Madhur Kumar Tanwani</name><uri>http://www.blogger.com/profile/05009478527695401190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_YpQDTB43-wc/SnR4t4ECpQI/AAAAAAAAAHw/GIUcS5biCWM/S220/madhur-full.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-8443566051941938916</id><published>2009-09-06T03:25:00.001-07:00</published><updated>2009-09-06T03:27:04.309-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='riddle'/><category scheme='http://www.blogger.com/atom/ns#' term='odd man out'/><category scheme='http://www.blogger.com/atom/ns#' term='algorithm'/><category scheme='http://www.blogger.com/atom/ns#' term='problem solving'/><title type='text'>Find jar with the contaminated pills</title><content type='html'>You have 4 jars of pills. Each pill is a certain weight, except for                  contaminated pills contained in one jar, where each pill is weight + 1. How                  could you tell which jar had the contaminated pills in just one measurement?&lt;br /&gt;&lt;br /&gt;Source : &lt;a href="http://www.sellsbrothers.com/fun/msiview/default.aspx?content=question.htm"&gt;http://www.sellsbrothers.com/fun/msiview/default.aspx?content=question.htm&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-8443566051941938916?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/8443566051941938916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=8443566051941938916' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/8443566051941938916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/8443566051941938916'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/09/find-jar-with-contaminated-pills.html' title='Find jar with the contaminated pills'/><author><name>Madhur Kumar Tanwani</name><uri>http://www.blogger.com/profile/05009478527695401190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_YpQDTB43-wc/SnR4t4ECpQI/AAAAAAAAAHw/GIUcS5biCWM/S220/madhur-full.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-431354379454514263</id><published>2009-09-05T11:20:00.001-07:00</published><updated>2009-09-05T11:24:02.258-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='array'/><category scheme='http://www.blogger.com/atom/ns#' term='repeating'/><category scheme='http://www.blogger.com/atom/ns#' term='algorithm'/><category scheme='http://www.blogger.com/atom/ns#' term='problem solving'/><title type='text'>Find repeating element in array</title><content type='html'>In an array from 1 to n, one number is present twice. How to do you determine which one?&lt;br /&gt;&lt;br /&gt;There are multiple answers - all correct. We would, obviously, aim for the optimized one - benchmark parameters being time &amp;amp; space complexity &lt;br /&gt;&lt;br /&gt;Source : &lt;a href="http://www.noop.nl/2009/01/100-interview-questions-for-software-developers.html"&gt;http://www.noop.nl/2009/01/100-interview-questions-for-software-developers.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-431354379454514263?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/431354379454514263/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=431354379454514263' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/431354379454514263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/431354379454514263'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/09/find-repeating-element-in-array.html' title='Find repeating element in array'/><author><name>Madhur Kumar Tanwani</name><uri>http://www.blogger.com/profile/05009478527695401190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_YpQDTB43-wc/SnR4t4ECpQI/AAAAAAAAAHw/GIUcS5biCWM/S220/madhur-full.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-1752135148803528100</id><published>2009-09-05T10:59:00.001-07:00</published><updated>2009-09-05T11:06:49.273-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='riddle'/><category scheme='http://www.blogger.com/atom/ns#' term='puzzle'/><title type='text'>Find direction of rotation</title><content type='html'>Imagine a disk spinning like a record player turn table. Half of the disk is black and the other is white. Assume you have an unlimited number of color sensors. How many sensors would you have to place around the disk to determine the direction the disk is spinning? Where would they be placed?&lt;br /&gt;&lt;br /&gt;Source : &lt;a href="http://www.sellsbrothers.com/fun/msiview/default.aspx?content=question.htm"&gt;http://www.sellsbrothers.com/fun/msiview/default.aspx?content=question.htm&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-1752135148803528100?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/1752135148803528100/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=1752135148803528100' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/1752135148803528100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/1752135148803528100'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/09/find-direction-of-rotation.html' title='Find direction of rotation'/><author><name>Madhur Kumar Tanwani</name><uri>http://www.blogger.com/profile/05009478527695401190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_YpQDTB43-wc/SnR4t4ECpQI/AAAAAAAAAHw/GIUcS5biCWM/S220/madhur-full.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-4200543563901511468</id><published>2009-09-05T10:57:00.001-07:00</published><updated>2009-09-05T11:07:00.222-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='riddle'/><category scheme='http://www.blogger.com/atom/ns#' term='puzzle'/><title type='text'>Pay for 7 days using 1 7-segment gold bar and 2 cuts</title><content type='html'>You've got someone working for you for seven days and a gold bar to pay them. The gold bar is segmented into seven connected pieces. You must give them a piece of gold at the end of every day. If you are only allowed to make two breaks in the gold bar, how do you pay your worker?&lt;br /&gt;&lt;br /&gt;Source : &lt;a href="http://www.sellsbrothers.com/fun/msiview/default.aspx?content=question.htm"&gt;http://www.sellsbrothers.com/fun/msiview/default.aspx?content=question.htm&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-4200543563901511468?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/4200543563901511468/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=4200543563901511468' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/4200543563901511468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/4200543563901511468'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/09/pay-for-7-days-using-1-7-segment-gold.html' title='Pay for 7 days using 1 7-segment gold bar and 2 cuts'/><author><name>Madhur Kumar Tanwani</name><uri>http://www.blogger.com/profile/05009478527695401190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_YpQDTB43-wc/SnR4t4ECpQI/AAAAAAAAAHw/GIUcS5biCWM/S220/madhur-full.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-2420372174290944080</id><published>2009-09-03T11:54:00.001-07:00</published><updated>2009-09-03T11:55:09.373-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='probability'/><category scheme='http://www.blogger.com/atom/ns#' term='problem solving'/><title type='text'>Divide 100 marbles into two piles</title><content type='html'>&lt;b&gt;&lt;/b&gt;How would you divide 50 black and 50 white marbles into two piles so that the probability of picking a white marble as follows is maximized: we first pick one of the piles uniformly at random, then we pick a marble in that pile uniformly at random?&lt;br /&gt;&lt;br /&gt;Source : &lt;a href="http://gurmeetsingh.wordpress.com/puzzles/"&gt;http://gurmeetsingh.wordpress.com/puzzles/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-2420372174290944080?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/2420372174290944080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=2420372174290944080' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/2420372174290944080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/2420372174290944080'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/09/probability-divide-100-marbles-into-two.html' title='Divide 100 marbles into two piles'/><author><name>Madhur Kumar Tanwani</name><uri>http://www.blogger.com/profile/05009478527695401190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_YpQDTB43-wc/SnR4t4ECpQI/AAAAAAAAAHw/GIUcS5biCWM/S220/madhur-full.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-4644371224839653498</id><published>2009-09-03T10:25:00.001-07:00</published><updated>2009-09-03T10:25:22.565-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flip bits in matric'/><title type='text'>Flip bits in a matrix</title><content type='html'>An 8×8 matrix contains zeros and ones. You may repeatedly choose any 3×3 or 4×4 block and flip all bits in the block (that is, convert zeros to ones, and ones to zeros). Can you remove all the ones in the matrix&lt;br /&gt;&lt;br /&gt;Source -&amp;nbsp; http://gurmeetsingh.wordpress.com/puzzles/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-4644371224839653498?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/4644371224839653498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=4644371224839653498' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/4644371224839653498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/4644371224839653498'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/09/flip-bits-in-matrix.html' title='Flip bits in a matrix'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-5567522745868662968</id><published>2009-09-02T08:12:00.000-07:00</published><updated>2009-09-02T08:12:27.339-07:00</updated><title type='text'>Find number of digits in a number</title><content type='html'>Can you do it in constant time &amp;amp; memory?&lt;br /&gt;&lt;br /&gt;Solution -&lt;br /&gt;&lt;br /&gt;Lets consider for base 10&lt;br /&gt;(i) 1 - 9 numbers have a tight upper bound of (10 POW 1)&lt;br /&gt;(ii) 10 - 99 numbers have a tight upper bound of (10 POW 2)&lt;br /&gt;(iv) 100 - 999 numbers&amp;nbsp; have a tight upper bound of (10 POW 3)&lt;br /&gt;.........&lt;br /&gt;-------&lt;br /&gt;-------&lt;br /&gt;&lt;br /&gt;The above holds true for any n with base 10 as the numbers round off to multiple digits once the MSB reaches (base-1) for a single digit number and for a multi digit when all digits reach (base-1)&lt;br /&gt;&lt;br /&gt;Using the above statements we can derive the following &lt;br /&gt;&lt;b&gt;M&lt;/b&gt; (&lt;i&gt;Maximum supported number in a base for given&lt;/i&gt; &lt;b&gt;'n' &lt;/b&gt;digits) = &lt;b&gt;(base&lt;/b&gt; POW '&lt;b&gt;n') - 1 .............(i)&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;As a proof replace n = 2 and base = 10&lt;b&gt; &lt;/b&gt;we get&amp;nbsp; (10 pow 2)-1 = 99&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;What we want to find is &lt;b&gt;'n'&lt;/b&gt; in &lt;b&gt;(i) &lt;/b&gt;Taking log both sides to negate exponential as &lt;b&gt;'n'&lt;/b&gt; is in the exponent&lt;br /&gt;log(m)&amp;nbsp; = log (base pow n ) - 1&lt;br /&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/b&gt;=&amp;nbsp; n log (base) - 1&amp;nbsp; ..... ( log(base) has base here...= 1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = n - 1&lt;br /&gt;&lt;b&gt;n = log(m) + 1.....................(ii)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;From (ii)&amp;nbsp; it's evident that for multiple of BASE i.e. 10 in this case 10, 100, 1000... log won't be fractional however it would be fractional i.e. for any number between 100 - 999 it would be tending between 2 &amp;amp; 3.&amp;nbsp; So the final formula should be the following&lt;br /&gt;&lt;br /&gt;&lt;b&gt;n&lt;/b&gt; = &lt;b&gt;floor&lt;/b&gt; (&lt;i&gt;log&lt;/i&gt; &lt;b&gt;Number&lt;/b&gt; + &lt;b&gt;1&lt;/b&gt; )......&lt;b&gt;..........(iii)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Eg: Let's try 59 log base 10 is in between (1...2 ) assume 1.6 as per &lt;b&gt;(iii)&lt;/b&gt; we get the following&lt;br /&gt;n = floor ( 1.6 + 1) = floor (2.6) = 2&lt;br /&gt;&lt;br /&gt;Another eg:: 500 log base 10 is in between (2...3) assume 2.5 as per (iii) we get the following &lt;br /&gt;n = floor ( 2.5 + 1) = floor (3.5 ) = 3&lt;br /&gt;&lt;br /&gt;Eg:: Let's try 1000 log base 10 is 3; as per (iii) we get the following&lt;br /&gt;n = floor ( 3 + 1) = floor (4) = 4&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-5567522745868662968?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/5567522745868662968/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=5567522745868662968' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/5567522745868662968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/5567522745868662968'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/09/find-number-of-digits-in-number.html' title='Find number of digits in a number'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-7436859064551050317</id><published>2009-08-25T05:02:00.000-07:00</published><updated>2009-08-25T05:11:33.877-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='minimum colors to paint graph'/><category scheme='http://www.blogger.com/atom/ns#' term='chromatic number'/><title type='text'>Minimum colors to paint adjacent areas</title><content type='html'>How many minimum colors are required fulfill areas which are divided by intersecting lines&lt;br /&gt;such that adjacent areas do not have same color. Assume you have a square.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Solution&lt;/span&gt; - If you have 'n' intersecting lines in the square you could have more than two adjacent polygon's to anyone polygon. This maps to a graph theory problem where each polygon is a graph node and is connected to more than one nodes. You need to find the chromatic number of this graph.  Finding the chromatic number is  a NP-COMPLETE problem&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Chromatic number&lt;/span&gt; - minimum colors required to paint the nodes such that adjacent nodes aren't of the same color.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-7436859064551050317?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/7436859064551050317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=7436859064551050317' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/7436859064551050317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/7436859064551050317'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/08/minimum-colors-to-paint-adjacent-areas.html' title='Minimum colors to paint adjacent areas'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-4861876738156481948</id><published>2009-08-19T06:26:00.001-07:00</published><updated>2009-08-27T01:25:34.009-07:00</updated><title type='text'>Rope Escape</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;Rajeev is trapped atop a building 200m high. He has with him a rope 150m long. There is a hook at the top where he stands. Looking down, he notices that midway between him and the ground, at a height of 100m, there is a ledge with another hook. In his pocket lies a Swiss knife. Hmm… how might he be able to come down using the rope, the two hooks and the Swiss knife?&lt;br /&gt;&lt;br /&gt;Source : &lt;a href="http://gurmeetsingh.wordpress.com/puzzles/" linkindex="16"&gt;http://gurmeetsingh.wordpress.com/puzzles/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Solution -&lt;br /&gt;1. You need 100 m to go down from mid hook of the building to the ground.&lt;br /&gt;2. Cut into 100 and 50 m with the knife.&lt;br /&gt;3. We need a mechanism so that 100 m is available to us midway.&lt;br /&gt;4. Following diagram shows how that's possible. C&lt;br /&gt;&amp;nbsp;&amp;nbsp; (i) Create a nose in the 50 m rope and tie it to the top hook of building.&lt;br /&gt;&amp;nbsp;&amp;nbsp; (ii) Slide the 100m through this nose as a U turn. While getting down midway after 50 m use both the ropes to go down another 50 m.&lt;br /&gt;&amp;nbsp;&amp;nbsp; (iii) You have reached 100 m, slide the 100m back from the nose by pulling one end.&lt;br /&gt;&amp;nbsp;&amp;nbsp; (iv) Tie the 100m rope and come down.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_IH2nnVw2sV4/SpZC9SoBmeI/AAAAAAAAAWc/S1moVbEZtns/s1600-h/Picture+8.png" imageanchor="1" linkindex="17" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_IH2nnVw2sV4/SpZC9SoBmeI/AAAAAAAAAWc/S1moVbEZtns/s320/Picture+8.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-4861876738156481948?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/4861876738156481948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=4861876738156481948' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/4861876738156481948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/4861876738156481948'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/08/rope-escape.html' title='Rope Escape'/><author><name>Madhur Kumar Tanwani</name><uri>http://www.blogger.com/profile/05009478527695401190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_YpQDTB43-wc/SnR4t4ECpQI/AAAAAAAAAHw/GIUcS5biCWM/S220/madhur-full.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpZC9SoBmeI/AAAAAAAAAWc/S1moVbEZtns/s72-c/Picture+8.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-6686725488411642549</id><published>2009-08-19T06:24:00.001-07:00</published><updated>2009-08-26T08:19:52.362-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='heavy light balls'/><category scheme='http://www.blogger.com/atom/ns#' term='find heavy balls'/><title type='text'>[ALGO] Six Colored Balls</title><content type='html'>We have two red, two green and two yellow balls. For each color, one ball is heavy and the other is light. All heavy balls weigh the same. All light balls weigh the same. How many weighings on a beam balance are necessary to identify the three heavy balls?&lt;br /&gt;&lt;br /&gt;Source : &lt;a href="http://gurmeetsingh.wordpress.com/puzzles/"&gt;http://gurmeetsingh.wordpress.com/puzzles/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Solution -&lt;br /&gt;You can have three sets with H-heavy, L - light represented as follows&lt;br /&gt;(&lt;span&gt;H,L)    (H,L)      (H, L)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;RED - BLUE -  YELLOW&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Approaches i thought of&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; -&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. If you compare H,L from RED and find the H and L. Now replace R(H) with one ball in B and replace R(L) with one ball in yellow. There is a combination wherein you will have HH in set1 and LL in set2 and HH in set1 and HL in set2. In both cases set1 is greater then set2 and you are done with two comparisons with still ambiguity left. This approach will never work for identifying heavy balls.&lt;br /&gt;2. Compare 1R and 1B. If they are greater  or less you are good and can find the third ball in two comparisons. If they are equal you are still reach wherein you have wasted one comparison and haven't found one ball. This approach will also not work.&lt;br /&gt;&lt;br /&gt;From 1 &amp; 2 we know that we need to consider balls from all three groups in the very first comparison.&lt;br /&gt;&lt;br /&gt;1. We take 1R, 1B, 1Y and compare them against the other corresponding 1R, 1B, 1Y balls.&lt;br /&gt;If they are equal then again we have wasted one comparison and haven't found any H or L. This approach will not work.&lt;br /&gt;&lt;br /&gt;Approach for Solution -&lt;br /&gt;Can we try and chain up the H,L balls consecutively. If we start to build the chain out of all possible combinations the following seem to cover all.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_IH2nnVw2sV4/SpPEiLoAEEI/AAAAAAAAAVo/bQaNt0G1KFI/s320/Picture+5.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 212px;" src="http://2.bp.blogspot.com/_IH2nnVw2sV4/SpPEiLoAEEI/AAAAAAAAAVo/bQaNt0G1KFI/s320/Picture+5.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Correction - Case 4 in figure above is (H&lt;/span&gt;&lt;span&gt;,H) (L,H)&lt;/span&gt; not (H,H)(L,L) as that's already covered in Case3&lt;br /&gt;&lt;br /&gt;More combinations would include (L, L)(H,H) and (L, L) (H, L)  which are same 3 &amp;amp;4 in the figure above. If we start with L in the first set then (L,H)(L,L) and (L,L ) (H, L) are also posible which are opposite to 3 &amp;amp; 4in figure above . So if we solve for 3 &amp;amp;4 the inverse of that solution will work here.&lt;br /&gt;&lt;br /&gt;1. From &amp;amp; case2 in figure above (H,L )=  (H, L )&lt;br /&gt;2. From case3 in figure above (H, H)  &gt; (L, L )&lt;br /&gt;3. From case4 in figure above (H, H) &gt; (L, H)&lt;br /&gt;4. Inverse of 2 &amp;amp; 3 would be    (L, L ) &lt; (H, L)&lt;br /&gt;5. Inverse of 2 &amp;amp; 3 would be    (L, L ) &lt; (H, H) &lt;br /&gt;6. If we reach case1  then compare the first set  and find whether the ball from R is H or L. All others in the chain are opposite to this. i.e. if R in chain is H then other R is light, R is connected to Blue L which is connected to H yellow. &lt;br /&gt;7. In case 2 &amp;amp; 3 since we have the same operator there is some ambiguity.&lt;br /&gt; (i) Replace 1 ball each among the two sets.&lt;br /&gt;&lt;br /&gt; &lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span&gt;Initial set after comparison 1 was (H, H) &gt; (L, L) &lt;/span&gt;&lt;br /&gt;   if we replace any ball in the first set we get (H,L) = (H, L)&lt;br /&gt;&lt;br /&gt;&lt;span&gt;        Initial set after comparison 1 (H, H) &gt; (L, H)&lt;/span&gt;&lt;br /&gt;  if we replace H in set1 with L in set2 we get (L, H) &lt; (H, H)&lt;br /&gt;  if we replace H in set1 with H in set2 we get (H, H) (L, H) - no change in weight&lt;br /&gt;Since we have three different operators as a result we can come to know which balls were replaced.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-6686725488411642549?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/6686725488411642549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=6686725488411642549' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/6686725488411642549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/6686725488411642549'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/08/algo-six-colored-balls.html' title='[ALGO] Six Colored Balls'/><author><name>Madhur Kumar Tanwani</name><uri>http://www.blogger.com/profile/05009478527695401190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_YpQDTB43-wc/SnR4t4ECpQI/AAAAAAAAAHw/GIUcS5biCWM/S220/madhur-full.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_IH2nnVw2sV4/SpPEiLoAEEI/AAAAAAAAAVo/bQaNt0G1KFI/s72-c/Picture+5.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-2445877452012037483</id><published>2009-08-19T03:11:00.000-07:00</published><updated>2009-08-20T00:23:15.947-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wine'/><category scheme='http://www.blogger.com/atom/ns#' term='prisoners'/><category scheme='http://www.blogger.com/atom/ns#' term='posionous bottle'/><title type='text'>Find the posionous bottle</title><content type='html'>A king has 1000 wine bottles out of which 1 is poisonous. The poison takes effect only after 30 days and the king has to host a party after 31 days. The king would make the prisoners (call them lab-rats if you must) drink from the bottles to find the poisonous bottle before hosting. What is the minimum number of prisoners that would die to help find the bottle?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-2445877452012037483?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/2445877452012037483/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=2445877452012037483' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/2445877452012037483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/2445877452012037483'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/08/king-1000-wine-bottles-out-of-which-1.html' title='Find the posionous bottle'/><author><name>Surender</name><uri>http://www.blogger.com/profile/09691420263501280900</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_xaGbcA7f0CQ/SNner1NrXLI/AAAAAAAAA5g/pXpUdcvbIkI/S220/suren.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-2488887018985156235</id><published>2009-08-16T10:46:00.001-07:00</published><updated>2009-08-28T23:21:40.545-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='strategy'/><category scheme='http://www.blogger.com/atom/ns#' term='problem solving'/><title type='text'>Catch the Fox</title><content type='html'>&lt;span style="font-size: 100%;"&gt;Consider five holes in a line. One of them is occupied by a fox. Each night, the fox moves to a neighboring hole, either to the left or to the right. Each morning, you get to inspect a hole of your choice. What strategy would ensure that the fox is eventually caught?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: 100%;"&gt;Solution&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Let's name the five holes as 1, 2, 3, 4, 5&lt;br /&gt;&lt;span style="font-size: 100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 100%;"&gt;&lt;b&gt;Approach&lt;/b&gt; - Try and corner the wolf&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 100%;"&gt;&lt;b&gt;Assumtion&lt;/b&gt; - Wolk starting point could be any 1 to 5&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 100%;"&gt;1. Checking 1 &amp;amp; 5 in the start is waste as if the wolf was at 1 or 5 initially he would have moved.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 100%;"&gt;2. Cornering the wolf can be done better through 2,3,4&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 100%;"&gt;3. If we stop at 2, 3, 4 once we will miss out the wolf.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 100%;"&gt;4. If we start at 3 first and be there for two jumps it's still possible we will miss out a single catch even if the wold starting point is 3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 100%;"&gt;5. Solution which worked -&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 100%;"&gt; (i) Be at 2 for the first two days.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 100%;"&gt;(ii) Go to 3; wait for a day.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 100%;"&gt;(iii) Come to 4; wait for two days&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 100%;"&gt;(iv) If you haven't caught the wolf till now there is only one case wherein he reached 2 on the 5th Day.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 100%;"&gt;Check 3 on 6th day if not found at 3 he is at 1.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-2488887018985156235?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/2488887018985156235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=2488887018985156235' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/2488887018985156235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/2488887018985156235'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/08/ps-catch-fox.html' title='Catch the Fox'/><author><name>Madhur Kumar Tanwani</name><uri>http://www.blogger.com/profile/05009478527695401190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_YpQDTB43-wc/SnR4t4ECpQI/AAAAAAAAAHw/GIUcS5biCWM/S220/madhur-full.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-9052340772659859181</id><published>2009-08-11T12:03:00.001-07:00</published><updated>2009-08-16T03:19:16.950-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cormen'/><category scheme='http://www.blogger.com/atom/ns#' term='algorithm'/><category scheme='http://www.blogger.com/atom/ns#' term='water jugs'/><category scheme='http://www.blogger.com/atom/ns#' term='sort'/><title type='text'>Water jugs problem</title><content type='html'>Suppose that you are given &lt;b&gt;'n' red&lt;/b&gt; and &lt;b&gt;'n' blue&lt;/b&gt; water jugs, all of different shapes and sizes. All red jugs hold different amounts of water, as do the blue ones. For every red jug, there is a blue jug that holds the same amount of water &amp;amp; vice versa.&lt;br /&gt;&lt;br /&gt;How can you find the grouping of the jugs into pairs of red &amp;amp; blue jugs that hold the same amount of water, in the minimum number of comparisons.&lt;br /&gt;&lt;br /&gt;Operations allowed&lt;br /&gt;&lt;ol&gt;&lt;li&gt;always compare between a red and a blue jar (no two reds, no two blues)&lt;/li&gt; &lt;li&gt;fill water in red / blue jug&lt;/li&gt;&lt;li&gt;pour from red jug to blue (&amp;amp; vice versa). This will help compare the capacity of the jugs.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Source : Introduction to Algorithms (by Cormen..., Problem 8-4)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-9052340772659859181?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/9052340772659859181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=9052340772659859181' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/9052340772659859181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/9052340772659859181'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/08/algo-water-jugs-problem.html' title='Water jugs problem'/><author><name>Madhur Kumar Tanwani</name><uri>http://www.blogger.com/profile/05009478527695401190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_YpQDTB43-wc/SnR4t4ECpQI/AAAAAAAAAHw/GIUcS5biCWM/S220/madhur-full.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-6813328934338118203</id><published>2009-08-09T07:59:00.000-07:00</published><updated>2009-09-02T09:30:16.203-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Find number of digits in a factorial'/><title type='text'>Find number of digits in a factorial of number</title><content type='html'>Without calculating factorial of a number is there a way to number how many digits will be there in the result.&lt;br /&gt;&lt;br /&gt;Solution - Based on a mathematical proof(&lt;br /&gt;http://stackoverflow.com/questions/1113167/can-one-know-how-large-a-factorial-would-be-before-calculating-it)&lt;br /&gt;The &lt;b&gt;logarithm of the factorial&lt;/b&gt; can be used to calculate the number of digits that the factorial number will take:&lt;br /&gt;&lt;br /&gt;log (n!) = log(n * (n-1) * (n -2 ) *......1)&lt;br /&gt;= log(n) + log (n-1 ) + ...... log(1)&lt;br /&gt;= SUM (log k) ( 1&amp;lt;= k &amp;lt;=n)&lt;br /&gt;&lt;br /&gt;There is a proof posted at&amp;nbsp; &lt;br /&gt;&amp;nbsp;http://inder-gnu.blogspot.com/2009/09/find-number-of-digits-in-number.html&lt;br /&gt;for number of digits in a number&amp;nbsp; 'n' this problem is a special case of the same where n is n!&lt;br /&gt;&lt;br /&gt;Can some one provide a proof of the base theorem here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-6813328934338118203?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/6813328934338118203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=6813328934338118203' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/6813328934338118203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/6813328934338118203'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/08/find-number-of-digits-in-factorial-of.html' title='Find number of digits in a factorial of number'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-3531799295925593730</id><published>2009-08-09T07:42:00.001-07:00</published><updated>2009-08-09T22:53:38.298-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='proof exact n/2 elements'/><title type='text'>Proof for number occuring n/2 times works always with three pointers</title><content type='html'>With reference to http://inder-gnu.blogspot.com/2009/08/number-occuring-n2-times.html&lt;br /&gt;Can you provide a mathematical proof that the three pointer approach will always work.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Problem -&lt;/span&gt; Find if a number is occuring exactly n/2 times in a sequence where other numbers are unique&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Solution Brief &lt;/span&gt; in previous blog to above problem - Keep three pointers and if any of them match each other break else keep moving the pointers. The matched number is occuring n/2 times.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Arrangement Problem&lt;/span&gt; - The three pointers approach fails if there is a possible arrangement such both the following are true&lt;br /&gt;1. &lt;span style="font-style: italic;"&gt;Two '&lt;span style="font-weight: bold;"&gt;a&lt;/span&gt;' are separated by a distance &lt;span style="font-weight: bold;"&gt;&gt;&lt;/span&gt; 3 units&lt;/span&gt;&lt;br /&gt;2. &lt;span style="font-style: italic;"&gt; No two '&lt;span style="font-weight: bold;"&gt;a&lt;/span&gt;' occur together.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If we have an arrangement adhering to &lt;span style="font-weight: bold;"&gt;Condition1&lt;/span&gt;&lt;br /&gt;.... , b, c, d, ,.....&lt;br /&gt;we are left with n/2 'a' an (n/2 )-3  other unique elements.&lt;br /&gt;&lt;br /&gt;With n/2 'a' and (n/2) -3 other elements fulfilling &lt;span style="font-weight: bold;"&gt;Condition2&lt;/span&gt;. (No two 'a' occur together.) is only possible on alternative arrangement of 'a' like ....a, b, a, c, a, d..... which isn't possible since n/2 &gt; n/2 - 3 and alternative arrangement is only possible when both sides elements are same in count.&lt;br /&gt;&lt;br /&gt;With reference to above if we fulfill &lt;span style="font-weight: bold;"&gt;condition1&lt;/span&gt; our arrangement will have&lt;span style="font-weight: bold;"&gt; two consecutive 'a' &lt;/span&gt;&lt;span&gt;(&lt;span style="font-style: italic;"&gt;breaking &lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Condition2&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;) &lt;/span&gt;which will be caught by the proposed solution&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-3531799295925593730?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/3531799295925593730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=3531799295925593730' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/3531799295925593730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/3531799295925593730'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/08/proof-for-number-occuring-n2-times.html' title='Proof for number occuring n/2 times works always with three pointers'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-5111470055849414260</id><published>2009-08-09T07:15:00.001-07:00</published><updated>2009-08-10T01:58:19.617-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='No sorting can be better than O( n logn)'/><title type='text'>No sorting can be better than O( n logn)</title><content type='html'>We all know that the sorting algorithms can't do better than O(n logn). Can you prove that a tighter lower bound is not possible.&lt;br /&gt;&lt;br /&gt;Solution.&lt;br /&gt;&lt;br /&gt;I found some cool solutions over the internet which i am posting.&lt;br /&gt;&lt;br /&gt;1. The sort will compare the numbers and based on the outcomes of those comparison move the values around, with the net effect of all the moves being  summarized by these arrows:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_IH2nnVw2sV4/Sn7a98RnSjI/AAAAAAAAAUw/mw69ZdAgH4s/s1600-h/73.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 179px;" src="http://3.bp.blogspot.com/_IH2nnVw2sV4/Sn7a98RnSjI/AAAAAAAAAUw/mw69ZdAgH4s/s320/73.gif" alt="" id="BLOGGER_PHOTO_ID_5367968563559090738" border="0" /&gt;&lt;/a&gt;It cannot also run that same way on these inputs &lt;div class="code"&gt; &lt;pre&gt;2, 3, 4, 5, 1&lt;br /&gt;&lt;/pre&gt; &lt;/div&gt; because if it did the outcome would be&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_IH2nnVw2sV4/Sn7bQ3jg5vI/AAAAAAAAAU4/Tc5j9OjrcLA/s1600-h/74.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 186px;" src="http://4.bp.blogspot.com/_IH2nnVw2sV4/Sn7bQ3jg5vI/AAAAAAAAAU4/Tc5j9OjrcLA/s320/74.gif" alt="" id="BLOGGER_PHOTO_ID_5367968888709506802" border="0" /&gt;&lt;/a&gt;The execution must take a different path for every permutation of inputs. One can visualize all these executions as an execution tree.  Each node is some action, either an assignment or a comparison; the tree branches after each comparison; each path from the root to a leaf is one execution of the program; and the height of the tree is the (worst-case) running time of the program&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_IH2nnVw2sV4/Sn7b8bunXYI/AAAAAAAAAVA/cpIko90C33k/s1600-h/75.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 246px; height: 320px;" src="http://1.bp.blogspot.com/_IH2nnVw2sV4/Sn7b8bunXYI/AAAAAAAAAVA/cpIko90C33k/s320/75.gif" alt="" id="BLOGGER_PHOTO_ID_5367969637154119042" border="0" /&gt;&lt;/a&gt;If the sorting program has to sort numbers it must reach the leaf doing comparisons finally.&lt;br /&gt;Height of tree is log(n) where n- number of elements.&lt;br /&gt;In this case the numbers of elements are all possible permutations of the input sequence which is n!&lt;br /&gt;&lt;br /&gt;Height of tree having all permutations of input data out of which one is sorted is  log(n!)&lt;br /&gt;&lt;pre class="literal-block"&gt;log (n * (n-1) * ... * 1) =&lt;br /&gt; log n + log (n-1) + ... + log 1&lt;br /&gt;&lt;br /&gt;With reference to (http://en.wikipedia.org/wiki/Stirling%27s_approximation)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://upload.wikimedia.org/math/8/e/c/8ecc889b047002c9d7c8a306c7cc5ae2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 238px; height: 40px;" src="http://upload.wikimedia.org/math/8/e/c/8ecc889b047002c9d7c8a306c7cc5ae2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/pre&gt;The above is O(n log n) as per http://www.crsr.net/Notes/BigO.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-5111470055849414260?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/5111470055849414260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=5111470055849414260' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/5111470055849414260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/5111470055849414260'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/08/no-sorting-can-be-better-than-o-n-logn.html' title='No sorting can be better than O( n logn)'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_IH2nnVw2sV4/Sn7a98RnSjI/AAAAAAAAAUw/mw69ZdAgH4s/s72-c/73.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-252961984565649466</id><published>2009-08-05T12:10:00.000-07:00</published><updated>2009-08-05T12:11:27.711-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='k numbers in array of n numbers sum to T'/><title type='text'>k numbers in array of n numbers sum to T</title><content type='html'>&lt;ol&gt;&lt;li&gt; Given a set &lt;em&gt;S&lt;/em&gt; of &lt;em&gt;n&lt;/em&gt; integers and an integer &lt;em&gt;T&lt;/em&gt;, give an O(n POW k-1 log n)  algorithm to test whether &lt;em&gt;k&lt;/em&gt; of the integers in &lt;em&gt;S&lt;/em&gt; sum up to &lt;em&gt;T&lt;/em&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-252961984565649466?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/252961984565649466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=252961984565649466' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/252961984565649466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/252961984565649466'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/08/k-numbers-in-array-of-n-numbers-sum-to.html' title='k numbers in array of n numbers sum to T'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-8957779312641079137</id><published>2009-08-05T02:54:00.000-07:00</published><updated>2009-08-05T12:12:19.790-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='max and min difference in unsorted numbers'/><title type='text'>Find max and min difference in unsorted numbers</title><content type='html'>&lt;p&gt; (a)  Let &lt;em&gt;S&lt;/em&gt; be an &lt;em&gt;unsorted&lt;/em&gt; array of &lt;em&gt;n&lt;/em&gt; integers. Give an algorithm that finds the pair   that &lt;em&gt;maximizes&lt;/em&gt; |&lt;i&gt;x&lt;/i&gt;-&lt;i&gt;y&lt;/i&gt;|. Your algorithm must run in &lt;i&gt;O&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt;) worst-case time. &lt;/p&gt;&lt;p&gt; (b) Let &lt;em&gt;S&lt;/em&gt; be a &lt;em&gt;sorted&lt;/em&gt; array of &lt;em&gt;n&lt;/em&gt; integers. Give an algorithm that finds the pair   that &lt;em&gt;maximizes&lt;/em&gt; |&lt;i&gt;x&lt;/i&gt;-&lt;i&gt;y&lt;/i&gt;|. Your algorithm must run in &lt;i&gt;O&lt;/i&gt;(1) worst-case time. &lt;/p&gt;&lt;p&gt; (c)   Let &lt;em&gt;S&lt;/em&gt; be an &lt;em&gt;unsorted&lt;/em&gt; array of &lt;em&gt;n&lt;/em&gt; integers. Give an algorithm that finds the pair   that &lt;em&gt;minimizes&lt;/em&gt; |&lt;i&gt;x&lt;/i&gt;-&lt;i&gt;y&lt;/i&gt;|, for  . Your algorithm must run in O(n log n) worst-case time. &lt;/p&gt;&lt;p&gt; (d) Let &lt;em&gt;S&lt;/em&gt; be a &lt;em&gt;sorted&lt;/em&gt; array of &lt;em&gt;n&lt;/em&gt; integers. Give an algorithm that finds the pair   that &lt;em&gt;minimizes&lt;/em&gt; |&lt;i&gt;x&lt;/i&gt;-&lt;i&gt;y&lt;/i&gt;|, for  . Your algorithm must run in &lt;i&gt;O&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt;) worst-case time.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Posting Comment1 as solution for easier access&lt;/p&gt;&lt;dl class="" id="comments-block"&gt;&lt;dd class="comment-body"&gt; &lt;p&gt;a. find max and min nos in the list. That is O(n). That itself is the pair that maximizes |x-y|&lt;br /&gt;&lt;br /&gt;b. a[0] and a[n-1] is the pair if its a sorted list. so O(1)&lt;br /&gt;&lt;br /&gt;c. sort the list[O(nlogn)] and see solution for d.&lt;br /&gt;&lt;br /&gt;d. run through the list once and find the pair of consecutive nos with the least diff. O(n)&lt;/p&gt; &lt;/dd&gt;&lt;dd class="comment-footer"&gt; &lt;span class="comment-timestamp"&gt; &lt;/span&gt;&lt;br /&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-8957779312641079137?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/8957779312641079137/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=8957779312641079137' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/8957779312641079137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/8957779312641079137'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/08/find-max-and-min-difference-in-unsorted.html' title='Find max and min difference in unsorted numbers'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-4826273097167333630</id><published>2009-08-03T02:59:00.000-07:00</published><updated>2009-08-09T07:32:21.648-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='number occuring exactly n/2 times'/><title type='text'>Find Number occuring exactly n/2 times</title><content type='html'>You have an array of number/characters. Find if there is a number which occurs exactly n/2 times. All other characters in the set/array are distinct. Can you do it in log(n)&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 20px;font-size:13;" &gt;Using the distinct part as a hint here is a solution in O(n)&lt;br /&gt;&lt;br /&gt;Assumption - All elements apart from the one occuring n/2 times is unique&lt;br /&gt;&lt;br /&gt;Solution principle - If you find any two elements matching that's the solution.&lt;br /&gt;&lt;br /&gt;Distribution of characters could be variant of following&lt;br /&gt;1. b,c,d,a,a,a&lt;br /&gt;2. a,b,a,c,d,a&lt;br /&gt;3. a,b,c,a,a,d&lt;br /&gt;&lt;br /&gt;Solution&lt;br /&gt;--------&lt;br /&gt;1. Compare consecutive elements if they match we have found the element occuring n/2 times.&lt;br /&gt;&lt;br /&gt;2. Keep two ptr1 &amp;amp; ptr2 handy and store the two compared characters if they don't match.&lt;br /&gt;&lt;br /&gt;3. Compare the third character (next one )with either two stored above.&lt;br /&gt;If anyone matches then return&lt;br /&gt;else&lt;br /&gt;replace ptr1&lt;-ptr2; ptr2&lt;-current character  4. continue 2 &amp;amp;3  &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51);font-size:7;" &gt;&lt;span class="Apple-style-span" style="line-height: 20px;font-size:48;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 20px;font-size:13;" &gt;Number of comparisons &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 20px;font-size:13;" &gt;-------------------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51);font-size:7;" &gt;&lt;span class="Apple-style-span" style="line-height: 20px;font-size:48;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 20px;font-size:13;" &gt; We need to do atleast n/2 comparisons&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Problem with above solution found by Madhur and mitigation.&lt;br /&gt;--------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;The two pointer approach will not work for this data set :&lt;br /&gt;a, b, c, a&lt;br /&gt;&lt;br /&gt;We need 3 pointers :&lt;br /&gt;ptr1 -&gt; first element&lt;br /&gt;ptr2 -&gt; second element&lt;br /&gt;ptr3 -&gt; third element&lt;br /&gt;&lt;br /&gt;while(end of array is reached) {&lt;br /&gt;if(any one of ptr1/2/3's value is equal) {&lt;br /&gt;  then return the match&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;  ptr1&lt;-ptr2&lt;-ptr3&lt;-next element  } } &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-4826273097167333630?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/4826273097167333630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=4826273097167333630' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/4826273097167333630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/4826273097167333630'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/08/number-occuring-n2-times.html' title='Find Number occuring exactly n/2 times'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-2286559467202614426</id><published>2009-08-02T10:56:00.001-07:00</published><updated>2009-08-02T10:57:45.535-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='array'/><category scheme='http://www.blogger.com/atom/ns#' term='algorithm'/><category scheme='http://www.blogger.com/atom/ns#' term='problem solving'/><title type='text'>Dividing array into groups</title><content type='html'>Divide a list of numbers into groups of consecutive numbers but their original order should be preserved.&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;&amp;lt;8,2,4,7,1,0,3,6&amp;gt;&lt;br /&gt;&lt;br /&gt;should be divided into two groups like this:&lt;br /&gt;&amp;lt;2,4,1,0,3&amp;gt; &amp;lt;8,7,6&amp;gt;&lt;br /&gt;&lt;br /&gt;Source : &lt;a href="http://discuss.techinterview.org/default.asp?interview.11.770712.8"&gt;http://discuss.techinterview.org/default.asp?interview.11.770712.8&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-2286559467202614426?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/2286559467202614426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=2286559467202614426' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/2286559467202614426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/2286559467202614426'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/08/dividing-array-into-groups.html' title='Dividing array into groups'/><author><name>Madhur Kumar Tanwani</name><uri>http://www.blogger.com/profile/05009478527695401190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_YpQDTB43-wc/SnR4t4ECpQI/AAAAAAAAAHw/GIUcS5biCWM/S220/madhur-full.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-8315505180624375518</id><published>2009-08-01T05:41:00.001-07:00</published><updated>2009-08-01T05:41:37.524-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='algorithms'/><category scheme='http://www.blogger.com/atom/ns#' term='sort'/><title type='text'>Sort on second key when, first key in a set is sorted</title><content type='html'>Assume that we are given as input n pairs of items, where&lt;br /&gt;&lt;ol&gt;&lt;li&gt;the first item is a number&lt;/li&gt;&lt;li&gt;the second item is one of three colors (red, blue, or yellow). &lt;/li&gt;&lt;/ol&gt;Further, assume that the items are sorted by number. Give an O(n) algorithm to sort the items by color (all reds before all blues before all yellows) such that the numbers for identical colors stay sorted.&lt;br /&gt;&lt;br /&gt;For example: (1,blue), (3,red), (4,blue), (6,yellow), (9,red) should become (3,red), (9,red), (1,blue), (4,blue), (6,yellow).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-8315505180624375518?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/8315505180624375518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=8315505180624375518' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/8315505180624375518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/8315505180624375518'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/08/sort-on-second-key-when-first-key-in.html' title='Sort on second key when, first key in a set is sorted'/><author><name>Madhur Kumar Tanwani</name><uri>http://www.blogger.com/profile/05009478527695401190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_YpQDTB43-wc/SnR4t4ECpQI/AAAAAAAAAHw/GIUcS5biCWM/S220/madhur-full.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-4830006254784836044</id><published>2009-08-01T04:04:00.000-07:00</published><updated>2009-08-01T04:07:34.019-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='algorithms'/><category scheme='http://www.blogger.com/atom/ns#' term='search'/><category scheme='http://www.blogger.com/atom/ns#' term='sort'/><title type='text'>Find if summation of numbers from two lists is given number</title><content type='html'>Problem: Given two lists A &amp;amp; B define an algo, which will identify two numbers 'a' and 'b', such that a + b = x, where 'x' is the input.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-4830006254784836044?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/4830006254784836044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=4830006254784836044' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/4830006254784836044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/4830006254784836044'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/08/find-if-summation-of-numbers-from-two.html' title='Find if summation of numbers from two lists is given number'/><author><name>Madhur Kumar Tanwani</name><uri>http://www.blogger.com/profile/05009478527695401190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_YpQDTB43-wc/SnR4t4ECpQI/AAAAAAAAAHw/GIUcS5biCWM/S220/madhur-full.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-5639473702686232478</id><published>2009-07-07T23:25:00.000-07:00</published><updated>2009-07-08T01:01:58.081-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='find majority element'/><title type='text'>Find a number occuring &gt;  n/2 times in an array</title><content type='html'>You are given an array of numbers/characters. A number/character occurs more than n/2 times. Find the number in 0(n) time O(1) space and one pass of array?&lt;br /&gt;&lt;br /&gt;Array  - a b a c a a a&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Solution - Drawing parallels assume you have a room of 100 people who need to vote and the candidate wins iff 51 votes are under his name. Hypothetically if we ask people to bash the other person if he is not voting for the same candidate.&lt;br /&gt;&lt;br /&gt;People voting for 'b' will bash people voting for 'a'  and in return get bashed.&lt;br /&gt;Since 'a' has 51% majority, 1 person voting for 'a' would be last man standing here.&lt;br /&gt;&lt;br /&gt;    a b a c a a a&lt;br /&gt;|&lt;br /&gt;a:0&lt;br /&gt;&lt;br /&gt;   a b a c a a a&lt;br /&gt;   |&lt;br /&gt;  a:1&lt;br /&gt;&lt;br /&gt;   a b a c a a a&lt;br /&gt;      |&lt;br /&gt;     a:0&lt;br /&gt;&lt;br /&gt;       a b a c a a a&lt;br /&gt;              |&lt;br /&gt;             a:1&lt;br /&gt; &lt;br /&gt;         a b a c a a a&lt;br /&gt;                   |&lt;br /&gt;                   a:0&lt;br /&gt;&lt;br /&gt;              a b a c a a a&lt;br /&gt;                           |&lt;br /&gt;                          a:1&lt;br /&gt;     &lt;br /&gt;                  a b a c a a a&lt;br /&gt;                                  |&lt;br /&gt;                                  a:2&lt;br /&gt; &lt;br /&gt;                          a b a c a a a&lt;br /&gt;                                             |&lt;br /&gt;                                            a:3&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-5639473702686232478?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/5639473702686232478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=5639473702686232478' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/5639473702686232478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/5639473702686232478'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/07/find-number-occuring-n2-times-in-array.html' title='Find a number occuring &gt;  n/2 times in an array'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-5935640456801788754</id><published>2009-05-02T04:43:00.000-07:00</published><updated>2009-05-02T04:48:03.096-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='algorithms'/><category scheme='http://www.blogger.com/atom/ns#' term='searching'/><category scheme='http://www.blogger.com/atom/ns#' term='unbounded'/><title type='text'>Find change in sequence of digits</title><content type='html'>For a sequence of digits like this&lt;br /&gt;&lt;br /&gt;0000000000000000000001111111111111111........&lt;br /&gt;&lt;br /&gt;given that&lt;br /&gt;&lt;ul&gt;&lt;li&gt;the sequence is a stream - so full length is not known&lt;/li&gt;&lt;li&gt;no '0's will appear after a '1'&lt;/li&gt;&lt;/ul&gt;What algorithm would efficiently find the change point - i.e. the point where '0's stop and '1's start?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-5935640456801788754?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/5935640456801788754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=5935640456801788754' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/5935640456801788754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/5935640456801788754'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/05/find-change-in-sequence-of-digits.html' title='Find change in sequence of digits'/><author><name>Madhur Kumar Tanwani</name><uri>http://www.blogger.com/profile/05009478527695401190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_YpQDTB43-wc/SnR4t4ECpQI/AAAAAAAAAHw/GIUcS5biCWM/S220/madhur-full.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-4474429408329269178</id><published>2009-05-02T04:08:00.000-07:00</published><updated>2009-05-02T04:20:20.769-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puzzle'/><category scheme='http://www.blogger.com/atom/ns#' term='mathematics'/><category scheme='http://www.blogger.com/atom/ns#' term='computer science'/><title type='text'>Breaking mxn chocolate into 1x1 pieces</title><content type='html'>We need to break a n/n bar of chocolate into 1 x 1 pieces? How many cuts will you have to make (horizontal or vertical) if&lt;br /&gt;&lt;ul&gt;&lt;li&gt;stacking of pieces is allowed&lt;/li&gt;&lt;li&gt;stacking is not allowed  (neither side of a bar / piece)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Source : http://gurmeetsingh.wordpress.com/puzzles/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-4474429408329269178?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/4474429408329269178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=4474429408329269178' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/4474429408329269178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/4474429408329269178'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/05/breaking-mxn-chocolate-into-1x1-pieces.html' title='Breaking mxn chocolate into 1x1 pieces'/><author><name>Madhur Kumar Tanwani</name><uri>http://www.blogger.com/profile/05009478527695401190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_YpQDTB43-wc/SnR4t4ECpQI/AAAAAAAAAHw/GIUcS5biCWM/S220/madhur-full.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-177368227941557489</id><published>2009-04-13T12:30:00.000-07:00</published><updated>2011-03-07T08:23:59.624-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='caching'/><category scheme='http://www.blogger.com/atom/ns#' term='lru'/><title type='text'>optimal implementation for LRU(least recently used) caching</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;What be the most optimal way/data structure to implement LRU caching.&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #134f5c;"&gt;&lt;b&gt;Requirements&lt;/b&gt;&lt;/div&gt;--------------------------&lt;br /&gt;&lt;br /&gt;Let's say i want to design a cache which adheres to the following requirements&lt;br /&gt;&lt;br /&gt;1. Should grow upto infinity(bounded by runtime size, eg: in JAVA jvm size)&lt;br /&gt;2. When the system runs out of memory all the entries except the top 'n' used should be flushed out.&lt;br /&gt;3. get() and add() operations in cache should work in O(1)&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #134f5c;"&gt;&lt;b&gt;Why not use WeakHashMap provided by Java?&lt;/b&gt;&lt;/div&gt;&lt;b&gt;--------------------------------------------------------------- &lt;/b&gt;&lt;br /&gt;1. Weak Hash map stores soft references to keys and not values. Then using Reference Queues the values are removed from the MAP.&lt;br /&gt;&amp;nbsp;2. Since our SOFT CACHE is infinite in nature and considering that most of the time memory used by VALUE part in cache is larger we want to store weak references to values and not keys. Eg: in a photo sharing site my key could be 'eventId' and value could be 'photos'&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #134f5c;"&gt;&lt;b&gt;Code Details/File Explanation&lt;/b&gt;&lt;/div&gt;--------------------------------------&lt;br /&gt;1. Can be found at -&amp;gt;&lt;a href="http://datastructure-puzzles-codesolutions.blogspot.com/2011/03/design-and-optimal-lru-cache.html"&gt;http://datastructure-puzzles-codesolutions.blogspot.com/2011/03/design-and-optimal-lru-cache.html&lt;/a&gt;&lt;br /&gt;2. Direct Downloads available at -&amp;gt;&lt;a href="https://github.com/inders/datastructure-repo/tree/master/LRUCache/src"&gt;https://github.com/inders/datastructure-repo/tree/master/LRUCache/src&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #134f5c;"&gt;&lt;b&gt;&amp;nbsp;Solution/Approach&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;b&gt;--------------------------&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span style="color: black;"&gt;1. Soft References in JAVA provide mechanism &lt;/span&gt;to create soft references to a heap area which (reference along with heap area) can be gc'd if it's reachable by soft references. We'll use this in designing our SOFTCACHE which will infinite entries.&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;2. To address requirement[2] above we'll create a hard Cache of top 'n' entries being used. Store strong references to heap areas in Hard Cache for top 'n' entries. This woul restrict gc from collecting them.&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;3. get and add shuffle around the data structures designed to give a O(1) time complexity. The following picture shows the details.&lt;br /&gt;&lt;br /&gt;Notation in the figure below&lt;br /&gt;1. SV1 - soft reference to value1&lt;br /&gt;2. HV1 - hard reference to value1&lt;br /&gt;3. HEAP - JVM heap&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-eTD9xad0Lj4/TXPVCFi195I/AAAAAAAAAb4/QuDIBOuQjjg/s1600/Picture+10.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="302" src="https://lh5.googleusercontent.com/-eTD9xad0Lj4/TXPVCFi195I/AAAAAAAAAb4/QuDIBOuQjjg/s400/Picture+10.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-177368227941557489?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/177368227941557489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=177368227941557489' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/177368227941557489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/177368227941557489'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/04/optimal-implementation-for-lruleast.html' title='optimal implementation for LRU(least recently used) caching'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh5.googleusercontent.com/-eTD9xad0Lj4/TXPVCFi195I/AAAAAAAAAb4/QuDIBOuQjjg/s72-c/Picture+10.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-5133563304329196291</id><published>2009-03-01T21:31:00.000-08:00</published><updated>2009-03-01T21:33:29.350-08:00</updated><title type='text'>Merge k Sorted Arrays</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: arial; border-collapse: collapse; font-size: 13px; "&gt;&lt;div&gt;Posted By - &lt;span class="Apple-style-span" style="border-collapse: separate; font-family: 'Trebuchet MS'; color: rgb(51, 51, 51); "&gt;madankumarrajan&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:'Trebuchet MS';color:#333333;"&gt;&lt;span class="Apple-style-span" style="border-collapse: separate;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;Problem - Given K sorted arrays, there are 2 ways in which you can get one complete sorted array:&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:arial;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:arial;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-size: 13px;"&gt;Solutions-&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial; border-collapse: collapse; font-size: 13px; "&gt;Let arrays be A1, A2,...Ak&lt;br /&gt;&lt;br /&gt;Way 1:&lt;br /&gt;Merge (A1, A2), (A3, A4),...&lt;br /&gt;Then there are k/2 sorted arrays now.&lt;br /&gt;Repeat the above procedure to get the full array sorted.&lt;br /&gt;This way wont work as the memory we can use is limited.&lt;br /&gt;&lt;br /&gt;Way 2:&lt;br /&gt;Form a min heap from the first element of all the k arrays. Extract the min element. It is the min element among all the arrays. Now take the next element from the array from which the min element has come, and put it in the min heap. Repeat the procedure.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-5133563304329196291?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/5133563304329196291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=5133563304329196291' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/5133563304329196291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/5133563304329196291'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2009/03/merge-k-sorted-arrays.html' title='Merge k Sorted Arrays'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-6313232707553368035</id><published>2008-07-21T10:26:00.000-07:00</published><updated>2008-07-21T10:30:47.763-07:00</updated><title type='text'>find optimum path between 2 words in a dictionary</title><content type='html'>You have a dictionary of 1000 words each of 3 chars. Given 2 words you have to find the optimum path between the 2 words. The optimum path contains the words in the dictionary   each word at a distance of 1 from the previous word.&lt;br /&gt;&lt;br /&gt;for eg source = cat , target = sun&lt;br /&gt;&lt;br /&gt;path is&lt;br /&gt;&lt;br /&gt;cat -&gt; bat -&gt; but -&gt; bun -&gt; sun&lt;br /&gt;&lt;br /&gt;given all these words are in the dictionary&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-6313232707553368035?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/6313232707553368035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=6313232707553368035' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/6313232707553368035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/6313232707553368035'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2008/07/find-optimum-path-between-2-words-in.html' title='find optimum path between 2 words in a dictionary'/><author><name>Rohan</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-8405820757174519624</id><published>2008-06-11T04:52:00.000-07:00</published><updated>2008-06-11T04:57:05.937-07:00</updated><title type='text'>Worm Travails</title><content type='html'>A rubber string is 10 meters long. A worm crawls from one end to the other at 1 meter/hr.  After each hour the string stretches to become 1 meter longer than it's last length.Will it reach the end ?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-8405820757174519624?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/8405820757174519624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=8405820757174519624' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/8405820757174519624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/8405820757174519624'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2008/06/worm-travails.html' title='Worm Travails'/><author><name>5vd33p74</name><uri>http://www.blogger.com/profile/13209074557555210575</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-3568483939382097453</id><published>2008-03-05T02:04:00.001-08:00</published><updated>2008-03-05T02:06:14.201-08:00</updated><title type='text'>GCD question</title><content type='html'>Prove the GCD of 2 numbers is equal to the GCD of the sum of the numbers and their LCM i.e.  if numbers are A and B then GCD(A,B) = GCD(sum(A,B),LCM(A,B)).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-3568483939382097453?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/3568483939382097453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=3568483939382097453' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/3568483939382097453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/3568483939382097453'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2008/03/gcd-question.html' title='GCD question'/><author><name>5vd33p74</name><uri>http://www.blogger.com/profile/13209074557555210575</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-2395950977464655196</id><published>2008-02-13T08:45:00.000-08:00</published><updated>2008-02-13T08:47:42.260-08:00</updated><title type='text'>A Lock with Grid of Switches</title><content type='html'>There is a lock which is an N by N grid of switches. Each switch can be in one of two states (on/off). The lock is unlocked if all the switches are on. The lock is built in such a way that, if you toggle some switch, all the switches in its row and its column toggle too.&lt;br /&gt;&lt;br /&gt;Give an algorithm which, given N and a configuration of the N^2 switches, will tell you whether the lock can be unlocked by a sequence of switch toggles.  &lt;br /&gt; &lt;br /&gt;Note 1: Can be done in O(N^2) time and O(1) space.&lt;br /&gt;Note 2: You just need to tell if a sequence which unlocks the lock exists (and not the actual sequence)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-2395950977464655196?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/2395950977464655196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=2395950977464655196' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/2395950977464655196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/2395950977464655196'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2008/02/lock-with-grid-of-switches.html' title='A Lock with Grid of Switches'/><author><name>5vd33p74</name><uri>http://www.blogger.com/profile/13209074557555210575</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-521474356108222098</id><published>2008-02-13T00:06:00.001-08:00</published><updated>2008-02-13T00:07:28.182-08:00</updated><title type='text'>Number is even or odd</title><content type='html'>Figure out if a number/integer is even or odd without using the division operator.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-521474356108222098?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/521474356108222098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=521474356108222098' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/521474356108222098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/521474356108222098'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2008/02/number-is-even-or-odd.html' title='Number is even or odd'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-6636819892726561039</id><published>2008-01-29T09:06:00.000-08:00</published><updated>2008-01-29T09:17:46.620-08:00</updated><title type='text'>sms suggest</title><content type='html'>you have to implement sms suggest feature in mobile. The suggest feature is one which suggests valid words when we press the keys once for any of the letters the key represents. for eg 2 represents a/b/c and 6 represents m/n/o, pressing 2,6 will suggest  an, am , bo (eg bolder is a valid word)..etc. So if you have a dictionary of words how will you store this on the mobile optimally so that storage is minumum and the running time to fetch the valid words is minimum?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-6636819892726561039?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/6636819892726561039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=6636819892726561039' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/6636819892726561039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/6636819892726561039'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2008/01/sms-suggest.html' title='sms suggest'/><author><name>Rohan</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-2326469252511135956</id><published>2008-01-24T09:50:00.000-08:00</published><updated>2008-01-24T09:55:14.109-08:00</updated><title type='text'>position of string in a dictionary</title><content type='html'>A dictionary consists of words having the restriction that c[i] &gt; c[i-1]. i.e character at ith positionis lexicographicaly greater than than character at i-1th position. eg abcd&lt;br /&gt;&lt;br /&gt;given a string how do we find it's position in the dictionary?&lt;br /&gt;&lt;br /&gt;eg a = position 1 , ab = position 27&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-2326469252511135956?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/2326469252511135956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=2326469252511135956' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/2326469252511135956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/2326469252511135956'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2008/01/position-of-string-in-dictionary.html' title='position of string in a dictionary'/><author><name>Rohan</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-1521444046858279411</id><published>2008-01-19T05:28:00.000-08:00</published><updated>2008-01-19T05:29:14.276-08:00</updated><title type='text'>pill puzzle</title><content type='html'>You are on a strict medical regimen that requires you to take two types of pills each day. You must take exactly one A pill and exactly one B pill at the same time. The pills are very expensive, and you don't want to waste any. So you open the bottle of A pills, and tap one out into your hand. Then you open the bottle of B pills and do the same thing -- but you make a mistake, and two B pills come out into your hand with the A pill. But the pills are all exactly identical. There is no way to tell A pills apart from B pills. How can you satisfy your regimen and take exactly one of each pill at the same time, without wasting any pills?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-1521444046858279411?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/1521444046858279411/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=1521444046858279411' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/1521444046858279411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/1521444046858279411'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2008/01/pill-puzzle.html' title='pill puzzle'/><author><name>Rohan</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-6181358537438730387</id><published>2008-01-09T01:36:00.000-08:00</published><updated>2008-01-09T01:39:58.600-08:00</updated><title type='text'>Find element in row and column sorted matrix</title><content type='html'>You are provided a n*n square matrix which has elements as both row and column sorted.&lt;br /&gt;Suggest an algorithm to find and element in the best possible time complexity.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-6181358537438730387?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/6181358537438730387/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=6181358537438730387' title='29 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/6181358537438730387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/6181358537438730387'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2008/01/find-element-in-row-and-column-sorted.html' title='Find element in row and column sorted matrix'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>29</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-1672730245246812211</id><published>2008-01-08T08:49:00.000-08:00</published><updated>2008-01-08T09:09:30.180-08:00</updated><title type='text'>Probability of point lying close to circumference than centre</title><content type='html'>You have a circle with radius r. What is the probability that a point lies more towards the circumference than towards the centre.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Solution&lt;br /&gt;P&lt;/span&gt;&lt;span&gt;robability of point lying close to circumference would be mean point is in the circle with area from r/2 from center till outside in the figure below it would be in blue part of the circle.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;P&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;robability = Area covered by circle from point r/2 towards circumference/ Area of the circle&lt;br /&gt;&lt;div style="text-align: justify;"&gt;  &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_IH2nnVw2sV4/R4Osyl_43KI/AAAAAAAAANQ/DKxYoK9Xkr0/s1600-h/circle.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 226px; height: 132px;" src="http://bp3.blogger.com/_IH2nnVw2sV4/R4Osyl_43KI/AAAAAAAAANQ/DKxYoK9Xkr0/s320/circle.JPG" alt="" id="BLOGGER_PHOTO_ID_5153152383835495586" border="0" /&gt;&lt;/a&gt;In the above given circle formula would be = Area of blue circle/ Area of circle&lt;br /&gt;                                                                             = pi r pow 2/ 4 / pi r 2 = 1/4&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-1672730245246812211?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/1672730245246812211/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=1672730245246812211' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/1672730245246812211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/1672730245246812211'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2008/01/probability-of-point-lying-close-to.html' title='Probability of point lying close to circumference than centre'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_IH2nnVw2sV4/R4Osyl_43KI/AAAAAAAAANQ/DKxYoK9Xkr0/s72-c/circle.JPG' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-7665170722452658081</id><published>2008-01-08T01:58:00.000-08:00</published><updated>2008-01-08T08:49:16.873-08:00</updated><title type='text'>Number placement on dice for equal probability sum</title><content type='html'>You have a dice which has numbers from 1..6.&lt;br /&gt;Another dice is provided to you empty; you need to place numbers on this dice so that whenever both dices are used there is an equal probablity of getting a sum between 1.. 12&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Solution::&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;T&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;otally there are 6*6 possible combinations from two dices. Since we need the sum from 1..12 with equal probability there should be three combinations among these 36 which sum up to each number in 1 to 12 to achieve a equal probability for all sums.&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Other Dice Numbers Presently  &lt;/span&gt;&lt;/span&gt;_   _   _   _     _    _&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;G&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;etting 1 we need 0 on the other dice&lt;br /&gt;Getting 12 we need 6 on the other dice&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;State of Numbers on other dice now &lt;/span&gt;&lt;/span&gt;0  6  _   _     _    _&lt;br /&gt;&lt;br /&gt;We need to get SUM=1 in three different combinations and only possibility is 1 and 0 on both dices so put two more 0's on second dice and we have three ways to get 1.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;State of numbers on other dice now &lt;/span&gt;0 6 0 0 _    _&lt;br /&gt;&lt;br /&gt;Now all the sum's from 7 to 12 can be achieved with one of the numbers be 6 and using the other numbers from first dice. Eg:: 7 can be 1 and 6 from dice 1 and dice2 and if we put two more sixes in dice2 then again 1 and other 6's on dice2 give us 3 ways for seven&lt;br /&gt;Similarly for 8 we can 2 from dice1 and the three sixes one by one we will have 3 ways for 8 and so on for all numbers from 7 to 12. Again we can use the three 0's on dice2 in the similar way we have used three sixes above for getting three ways for sum 1 to 6.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;State of numbers on other dice now &lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;0 6 0 0 6 6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-7665170722452658081?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/7665170722452658081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=7665170722452658081' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/7665170722452658081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/7665170722452658081'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2008/01/number-placement-on-dice-for-equal.html' title='Number placement on dice for equal probability sum'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-7754558987516209466</id><published>2008-01-04T10:51:00.000-08:00</published><updated>2011-08-02T04:25:44.542-07:00</updated><title type='text'>Find the median in a continous stream of numbers</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div align="justify"&gt;You are given a stream of numbers which can be positive or negative. You are required to provide an operation FIND MEDIAN..which when invoked should be able return the median of the numbers in stream (in sorted order) in O(1) time.&lt;br /&gt;&lt;br /&gt;Eg: 0 1 2 3 4&lt;br /&gt;Right FIND MEDIAN returns 2 as median&lt;br /&gt;&lt;br /&gt;Now input is -2 -4&lt;br /&gt;So Stream = 0 1 2 3 -2 -2 -4&lt;br /&gt;Sorted Stream would be -4 -2 0 1 2 3 4 and FIND MEDIAN returns 1&lt;br /&gt;&lt;br /&gt;&lt;a href="https://github.com/inders/datastructure-repo/tree/master/medianInContinousStream/src"&gt;Working JAVA CODE https://github.com/inders/datastructure-repo/tree/master/medianInContinousStream/src&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SOLUTION&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. Store the data in BST.&lt;br /&gt;2. Store additional information at each node i.e. number of nodes in left subtree and number of nodes in right subtree. These can be updated on insert and delete operations in O(h) where h is the height of tree.&lt;br /&gt;3. To find rank of any node in the tree use the following algorithm.&lt;br /&gt;&lt;br /&gt;Index of a node is it's position as in a inorder traversal of a binary search tree At each node you can calculate it's rank as sizeof(left subtree of current node) + 1&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Challenge&lt;/b&gt;:: This calculation becomes a problem once you move deep in a right subtree as it's rank should include rank of previous ancestors and it's left subtrees&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;b&gt; Easier approach is the following &lt;/b&gt;- &lt;br /&gt;&amp;nbsp;&amp;nbsp; -------------------------------------------&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; Rank of Node = (Number of nodes in left subtree) + 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Check k against rank of root&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; if k == rank(root)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; return&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; if ( k &amp;lt;&amp;nbsp; rank(root))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; go in left subtree of root&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; Till you are going in left subtrees you can calculate rank using above formula&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; if the rank you are looking for is &amp;gt; than rank of current node then you move to right subtree&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; and look for new rank = (Rank you are looking - rank of currentNode( as these many nodes you have already considered and are less than the rank you are looking)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; The above helps in not carrying&amp;nbsp; forward any information when you move to right subtree and you look for a node with a smaller index&amp;nbsp;in the right subtree&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-7754558987516209466?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/7754558987516209466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=7754558987516209466' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/7754558987516209466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/7754558987516209466'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2008/01/find-median-in-continous-stream-of.html' title='Find the median in a continous stream of numbers'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-3225700616978744076</id><published>2008-01-01T09:35:00.000-08:00</published><updated>2008-01-02T03:28:34.138-08:00</updated><title type='text'>Merge k sorted lists with total n elements</title><content type='html'>You are given k sorted lists with total n inputs in all the lists devise a algorithm to merge them into one single sorted list in O(n logk)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution: &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;1. First take two lists at a time and merge them so total elements parsed for all lists =O(n)&lt;br /&gt;    This operation results in k/2 lists&lt;br /&gt;2. Repeat steps till k/2 == 1.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Time complexity of above solution = O(n logk)&lt;/strong&gt;&lt;br /&gt;Step1 would loop through &lt;strong&gt;logk &lt;/strong&gt;times and each operation would require parsing all n elements in all the lists for making k/2 lists&lt;br /&gt;&lt;br /&gt;eg:: if i had 8 lists then first pass would make 4 lists by parsing all n elements; second pass would make 2 lists by parsing again n elements and third pass would give 1 list again by parsing n elements.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Constraint of the above Solution&lt;/strong&gt;&lt;br /&gt;For merging we would require &lt;strong&gt;O(n) &lt;/strong&gt;extra space.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution2: Without Using O(n) extra space; uses O(k) extra space&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;  &lt;/strong&gt;j = 1;&lt;br /&gt;1. (For all lists L[i])&lt;br /&gt;     {&lt;br /&gt;    Take the jth element from each list and create a min heap in O(k) with the node data and  &lt;br /&gt;    index information.    Take the minimum element from the heap in O(1) i.e. root node and put&lt;br /&gt;    it in &lt;strong&gt;List1 indexj.&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;    &lt;/strong&gt;if the element didn't belong to list1[j] then swap it with list1[j] with list to which the min&lt;br /&gt;    element belonged.&lt;br /&gt;    Now increment the pointer j for the list l1(or to the list where in the min nodes are getting added) and add the new node to min heap&lt;br /&gt;    }&lt;br /&gt;2. Keep repeating steps 1 till all n elements are being looked up&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Time Complexity = O(n logk )  SPACE = O(k)&lt;/strong&gt;&lt;br /&gt;At a time we have k elements min heap and for all n elements we have to readjust the heap in log(k) time so total time = &lt;strong&gt;O(n logk )&lt;/strong&gt; and space used = &lt;strong&gt;O(k)&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-3225700616978744076?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/3225700616978744076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=3225700616978744076' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/3225700616978744076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/3225700616978744076'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2008/01/merge-k-sorted-lists-of-size-n.html' title='Merge k sorted lists with total n elements'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-4303669288032262016</id><published>2008-01-01T08:47:00.000-08:00</published><updated>2008-01-01T09:55:13.662-08:00</updated><title type='text'>Find max viewed pages</title><content type='html'>Design an algorithm to find out efficiently the maximum number of used pages.&lt;br /&gt;&lt;br /&gt;Solution:&lt;br /&gt;Take all the input stream and build a max heap in (n log n) time.&lt;br /&gt;Then the topmost element of the heap is the one with maximum viewed pages.&lt;br /&gt;Each insertion in the heap happens in (log n) time since we need to check all non-leaf&lt;br /&gt;nodes on each insertion that the heap property is satisfied. And in a binary tree with&lt;br /&gt;n nodes there will (logn) non-leaf nodes.&lt;br /&gt;&lt;br /&gt;However the tight upper bound of creating a MAX heap  is O(n). So this can be done in O(n).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Proof of Tight asymptotic bound&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;1. A binary heap with n elements will have a height of log(n); being a complete binary tree.&lt;br /&gt;2. A binary heap with n elements has atmost n/2 pow (h+1) nodes of height h&lt;br /&gt;3. Time required to build a MAX heap is O(h) when called on a node of height h; since it needs to check all non-leaf nodes from height h to MAX (height of heap).&lt;br /&gt;4.  for (n = 0; n &lt;= log(n); n++)&lt;br /&gt;      {&lt;br /&gt;         n/2 POWER  (h+1) O(h)&lt;br /&gt;        // All nodes at height h wil require O(h) time   &lt;br /&gt;    }// Total we have to go though all non leaf nodes i.e. LOG(n) SO LOOP is like this.&lt;br /&gt;   &lt;br /&gt; O ( n( h/ 2 POWER h))&lt;br /&gt; for (n = 0; n &lt; = infinity; n ++)&lt;br /&gt;   {&lt;br /&gt;     h / 2 pow h is a constant&lt;br /&gt;   }&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;so total time complexity = O(n)&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-4303669288032262016?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/4303669288032262016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=4303669288032262016' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/4303669288032262016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/4303669288032262016'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2008/01/find-max-viewed-pages.html' title='Find max viewed pages'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-5985591017256346072</id><published>2008-01-01T08:42:00.000-08:00</published><updated>2008-01-01T09:34:42.705-08:00</updated><title type='text'>Data Structure for snake and ladder game</title><content type='html'>Data Structure to be used for playing snake and ladder game&lt;br /&gt;&lt;br /&gt;Solution:&lt;br /&gt;&lt;br /&gt;1. Use an array representation of 1..100&lt;br /&gt;2. each a[i] contains value (i+1) if no snake or ladder is there&lt;br /&gt;     a[i] contains the value &gt; i and the value pointed by the ladder; if a[i] has a ladder starting&lt;br /&gt;     a[i] contains value &lt; i; if  a[i] is a snake mouth&lt;br /&gt;&lt;br /&gt;3. Create the above array depending on the board structure.&lt;br /&gt;4. Generate two random numbers MOD 100 and use them to take a chance.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-5985591017256346072?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/5985591017256346072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=5985591017256346072' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/5985591017256346072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/5985591017256346072'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2008/01/data-structure-for-snake-and-ladder.html' title='Data Structure for snake and ladder game'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-1920974682334287444</id><published>2007-12-19T02:58:00.000-08:00</published><updated>2007-12-19T03:01:21.213-08:00</updated><title type='text'>To insert.delete, find and return the order of input</title><content type='html'>Design a data structure which can support the following operations optimally.&lt;div&gt;1. Insertion&lt;/div&gt;&lt;div&gt;2. Deletion&lt;/div&gt;&lt;div&gt;3. Finding an element.&lt;/div&gt;&lt;div&gt;4. Returning the elements in the order in which they came as input.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Note:: A singly linked already does these O(n) i am looking for something better than that.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-1920974682334287444?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/1920974682334287444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=1920974682334287444' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/1920974682334287444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/1920974682334287444'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2007/12/to-insertdelete-find-and-return-order.html' title='To insert.delete, find and return the order of input'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-1031488995959624192</id><published>2007-12-16T23:00:00.000-08:00</published><updated>2008-11-21T01:43:28.433-08:00</updated><title type='text'>Dictionary valid permutations of a Word</title><content type='html'>A string say "bat" is provided then design and algorithm to give all valid dictionary words possible with characters 'a', 'b', 't'.&lt;br /&gt;&lt;br /&gt;Assumption :: If you need a dictionary to get valid english words then you are free to design the dictionary in the best possible way which reduces the time complexity of your problem.&lt;br /&gt;&lt;br /&gt;Solution&lt;br /&gt;======&lt;br /&gt;&lt;br /&gt;1. Design a dictionary in the form of hash table with the following algorithm as a one time activity.&lt;br /&gt;for(all valid words in (English))&lt;br /&gt;{&lt;br /&gt;tmp = Sort(word);&lt;br /&gt;key = hash(tmp);&lt;br /&gt;store(key, word);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Let's run through the above algo with "bat"&lt;br /&gt;after sorting "bat" becomes "abt"; store "bat" in the hash key returned for "abt".&lt;br /&gt;Now say another valid permutation of "bat" is "tab", after sorting becomes "abt"..store "tab" in&lt;br /&gt;the same hash key as a list.&lt;br /&gt;&lt;br /&gt;Now our data structure looks like the following&lt;br /&gt;key - &gt; "bat" ---&gt; "tab"&lt;br /&gt;&lt;br /&gt;2. Assume know our function to give the valid combinations of a word recieves "bat" as input&lt;br /&gt;  tmp =   sort("bat")&lt;br /&gt;  // tmp = "abt"&lt;br /&gt;  key = hash("abt")&lt;br /&gt;  //key contains the pointer to list "bat" ---&gt; "tab", just printing the entire list gives us this combination in O(1)&lt;br /&gt;&lt;br /&gt;3. How do you design a hash function so that all combination's of 'bat' go to one hash key and no other word like 'bay' go the same, else it would result in a bug in functionality.&lt;br /&gt;  Weight 'a' ...'z' with prime numbers, hash function would be a product of corresponding primes..using the property of primes that it always has unique factors, no 2 primes would have different numbers giving the same product.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-1031488995959624192?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/1031488995959624192/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=1031488995959624192' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/1031488995959624192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/1031488995959624192'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2007/12/dictionary-valid-permutations-of-word.html' title='Dictionary valid permutations of a Word'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-4560538241572418978</id><published>2007-12-10T23:13:00.000-08:00</published><updated>2007-12-17T00:31:40.696-08:00</updated><title type='text'>Create two lists with minum difference of their sums</title><content type='html'>You have a list of numbers say 1 to n in unsorted fashion. Create two lists such that the difference in sum of numbers in each sublist is minimum.&lt;br /&gt;&lt;br /&gt;Case 1: Both the lists can have equal number of numbers in them.&lt;br /&gt;&lt;br /&gt;Case 2: Both lists can have unequal no. of numbers in them. (Harder)&lt;br /&gt;&lt;br /&gt;Assume our list is 5, 20, 6, 4, 200&lt;br /&gt;&lt;br /&gt;Solution for case 1:&lt;br /&gt;===============&lt;br /&gt;1. Sort the list in O(n(log(n))&lt;br /&gt;//Now list is 4, 5, 6, 20, 200&lt;br /&gt;&lt;br /&gt;2. Take two pointers&lt;br /&gt;ptr1= start of list&lt;br /&gt;ptr2 = end of list&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. flag = false;&lt;br /&gt;while(ptr1 != ptr2)&lt;br /&gt;if(flag == false)&lt;br /&gt;Take [ptr1] and [ptr2] and put it sublist1.&lt;br /&gt;flag = true;&lt;br /&gt;else&lt;br /&gt;Take [ptr1] and [ptr2] and put it sublist2.&lt;br /&gt;flag = false;&lt;br /&gt;ptr1++;&lt;br /&gt;ptr2--;&lt;br /&gt;&lt;br /&gt;Output&lt;br /&gt;======&lt;br /&gt;Sublist1 = 4, 200&lt;br /&gt;sublist2 = 5, 20, 6&lt;br /&gt;&lt;br /&gt;Solution2: for Case 2:&lt;br /&gt;===============&lt;br /&gt;1. Sort the list we get 4, 5, 6, 20, 200&lt;br /&gt;2. Take the maximum number i.e. last and put it in sublist1&lt;br /&gt;//sublist1 = 200&lt;br /&gt;3. Take numbers from start and keep putting in sublist 2 till&lt;br /&gt;the sum of all matches to the sum of sublist1.&lt;br /&gt;Once the sum in sublist2 &gt; sum(sublist1) start adding a number&lt;br /&gt;in sublist1 and so on.&lt;br /&gt;&lt;br /&gt;Output =&lt;br /&gt;Sublist1 = 200&lt;br /&gt;sublist2 = 4, 5, 6, 20&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-4560538241572418978?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/4560538241572418978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=4560538241572418978' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/4560538241572418978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/4560538241572418978'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2007/12/create-two-lists-with-minum-difference.html' title='Create two lists with minum difference of their sums'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-2392696146829833190</id><published>2007-12-10T23:10:00.000-08:00</published><updated>2009-08-09T07:41:24.944-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sort large file'/><category scheme='http://www.blogger.com/atom/ns#' term='sort huge file'/><title type='text'>Sort number's in a HUGE file.</title><content type='html'>You have a file with 10 numbers in random order; and a computer with memory which can read only five numbers at a time in RAM. You have to sort the numbers in best possible time complexity.&lt;br /&gt;You can assume your input file is&lt;br /&gt;2 6 6 8 12 10 14 16  20 18&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-2392696146829833190?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/2392696146829833190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=2392696146829833190' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/2392696146829833190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/2392696146829833190'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2007/12/sort-numbers-in-huge-file.html' title='Sort number&apos;s in a HUGE file.'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-2956814398788935214</id><published>2007-11-27T23:47:00.000-08:00</published><updated>2007-11-27T23:48:48.259-08:00</updated><title type='text'>Let’s Do Lunch</title><content type='html'>A nice puzzle to solve :&lt;br /&gt;&lt;br /&gt;http://www.coudal.com/lunch.php&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-2956814398788935214?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/2956814398788935214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=2956814398788935214' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/2956814398788935214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/2956814398788935214'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2007/11/lets-do-lunch.html' title='Let’s Do Lunch'/><author><name>5vd33p74</name><uri>http://www.blogger.com/profile/13209074557555210575</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-122841384642631374</id><published>2007-10-25T02:54:00.000-07:00</published><updated>2007-10-25T02:56:14.900-07:00</updated><title type='text'>Implement String1-String2 operation</title><content type='html'>Set Theory operation on two strings&lt;br /&gt;str1= apple&lt;br /&gt;str2=pie&lt;br /&gt;&lt;br /&gt;str1-str2 = (All elements of str1 which are not in str2)&lt;br /&gt;&lt;br /&gt;Answer in above case = al&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-122841384642631374?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/122841384642631374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=122841384642631374' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/122841384642631374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/122841384642631374'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2007/10/implement-string1-string2-operation.html' title='Implement String1-String2 operation'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-5985154535550033722</id><published>2007-10-24T23:05:00.001-07:00</published><updated>2007-10-24T23:05:36.675-07:00</updated><title type='text'>Reverse Linked list with Single Pointer</title><content type='html'>Can you reverse a singly linked list in O(n) time with a single pointer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-5985154535550033722?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/5985154535550033722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=5985154535550033722' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/5985154535550033722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/5985154535550033722'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2007/10/reverse-linked-list-with-single-pointer.html' title='Reverse Linked list with Single Pointer'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-2630114182282889786</id><published>2007-10-24T22:53:00.000-07:00</published><updated>2007-10-24T22:55:32.490-07:00</updated><title type='text'>Find unique number; when all have dup's except one.</title><content type='html'>&lt;span style="font-size:100%;"&gt;2n+1 numbers in a list except for 1 num all had duplicates, how to&lt;br /&gt;find out that num in O(n) &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-2630114182282889786?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/2630114182282889786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=2630114182282889786' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/2630114182282889786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/2630114182282889786'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2007/10/find-unique-number-when-all-have-dups.html' title='Find unique number; when all have dup&apos;s except one.'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-4146308194174477343</id><published>2007-10-02T23:47:00.000-07:00</published><updated>2007-10-24T23:00:38.462-07:00</updated><title type='text'>Find two no's in an array whose sum =X</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:130%;"&gt;We are given an array of size N with random numbers between any range and give a number x.&lt;br /&gt;&lt;br /&gt;Find in O(n) time and O(1) space a pair of numbers form the array whose sum is equal to x.&lt;br /&gt;&lt;br /&gt;Source :: Amazon&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;Solution:: If the array is sorted there is a solution in O(n) time complexity.&lt;br /&gt;&lt;br /&gt;Suppose are array is&lt;br /&gt;2, 5, 20, 50, 85, 90&lt;br /&gt;&lt;br /&gt;And our asnwer is 70, so output should be= 20, 50&lt;br /&gt;&lt;br /&gt;1. Take two pointers  with the following positions&lt;br /&gt;ptr1= (start of array)&lt;br /&gt;ptr2=(end of array)&lt;br /&gt;&lt;br /&gt;2. Add both the elements at pt1 and ptr2&lt;br /&gt; tmpsum= arr[ptr1] + arr[ptr2];&lt;br /&gt;&lt;br /&gt;3. if (tmpsum &gt; answer)&lt;br /&gt; {&lt;br /&gt;   // decrement ptr2(larger pointer..since it points to a bigger number)&lt;br /&gt;   ptr2--;&lt;br /&gt; }&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;  //tmpsum is too small for the answer increment ptr1( which is presently pointing to a smaller number)&lt;br /&gt;  ptr1++;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;4. Repeat step2 and step3 till ptr1 != ptr2 (if both pointers meet and sum is not found then it's not in the array)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;Example&lt;br /&gt;Arr= { &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;2, 5, 20, 50, 85, 90}&lt;br /&gt;answer = 70&lt;br /&gt;arr[ptr1]=2&lt;br /&gt;arr[ptr2] = 90&lt;br /&gt;tmpsum = 92&lt;br /&gt;tmpsum &gt; 70..so decrment ptr2;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;arr[ptr1]= 2&lt;br /&gt;arr[ptr2]=85&lt;br /&gt;tmpsum = 87&lt;br /&gt;tmpsum &gt; 70...decrement ptr2;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;arr[ptr1]= 2&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:100%;"&gt;arr[ptr2]=50&lt;br /&gt;tmpsum =52&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;tmpsum &lt;&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;arr[ptr1]= 5&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:100%;"&gt;arr[ptr2]=50&lt;br /&gt;tmpsum =55&lt;br /&gt;tmpsum &lt;&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;arr[ptr1]= 20&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:100%;"&gt;arr[ptr2]=50&lt;br /&gt;tmpsum =70&lt;br /&gt;tmpsum == 70..so return ptr1 and ptr2.&lt;br /&gt;&lt;br /&gt;Time Complexity of above solution = O(n)&lt;br /&gt;Space Complexity = O(1)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-4146308194174477343?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/4146308194174477343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=4146308194174477343' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/4146308194174477343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/4146308194174477343'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2007/10/find-two-nos-in-array-whose-sum-x.html' title='Find two no&apos;s in an array whose sum =X'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-8064400480294410048</id><published>2007-10-02T23:24:00.000-07:00</published><updated>2007-10-02T23:25:07.959-07:00</updated><title type='text'>Search for a friend in optimum time</title><content type='html'>You are standing at a crossing from where  there emerge four roads extending to infinity. Your friend is somewhere on  one of the four roads. &lt;u&gt; You do not know on which road he is and how far he  is from you&lt;/u&gt;. You have to walk to your friend and the total distance  traveled by you must be at most a constant times the actual distance of your  friend from you. In terminology of algorithms, you should traverse  &lt;i&gt; O(d)&lt;/i&gt; distance, where &lt;i&gt;d &lt;/i&gt; is the distance of your  friend from you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-8064400480294410048?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/8064400480294410048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=8064400480294410048' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/8064400480294410048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/8064400480294410048'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2007/10/search-for-friend-in-optimum-time.html' title='Search for a friend in optimum time'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-2066135587802281458</id><published>2007-09-13T03:46:00.001-07:00</published><updated>2007-09-28T12:32:46.219-07:00</updated><title type='text'>Find k-th largest in two sorted arrays</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;Find kth largest element in two sorted arrays.&lt;br /&gt;&lt;br /&gt;Can there be a solution better that O(k)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Solution 1&lt;br /&gt;=========&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;Suppose input array's are in the following fashion&lt;br /&gt;A[] = {2, 3, 7, 12, 27, 81, 91}&lt;br /&gt;b[] = {1, 25, 32, 74,  89}&lt;br /&gt;&lt;br /&gt;1. Take two pointers ptr1 and ptr2 at start in A[] and B[]&lt;br /&gt;2. if(A[i] &gt; B[j])&lt;br /&gt;      j++;&lt;br /&gt;    else&lt;br /&gt;     i++;&lt;br /&gt;3. if ( (i +j ) == k)&lt;br /&gt;     compare A[i] and B[j] and return the larger of them&lt;br /&gt;   else&lt;br /&gt;     repeat step2.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Time Complexity = O(k)&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Solution2&lt;br /&gt;==========&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Idea = &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;We have to find the median of first k elements of A and B and &lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;k = 5&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;1.&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;The kth largest among the union of A[] and B[] would be in the first k elements of  of A[] and b[]&lt;br /&gt;2. Consider k elements from A[] and B[] which results in the following array&lt;br /&gt;    a[] = {2. 3, 7, 12, 27}&lt;br /&gt;    b[] = {1, 25, 32, 74, 89}&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;3. Compare (A[mid], B[mid])&lt;br /&gt;     if (A[mid] is GT)&lt;br /&gt;     {&lt;br /&gt;&lt;/span&gt;     &lt;span style="font-weight: bold;font-size:130%;" &gt;For ArrayA &lt;/span&gt;&lt;span style="font-size:130%;"&gt;=  We can skip a[mid]..a[k] elements since a[mid] is greater and all elements from a[0]..a[mid] are  valid candidates for being the median; since A[mid] is the greater element no point considering bigger elements than that for the median&lt;br /&gt;&lt;/span&gt;     &lt;span style="font-weight: bold;font-size:130%;" &gt;For Array B = &lt;/span&gt;&lt;span style="font-size:130%;"&gt;We can skip b[0]...b[mid] elements since b[mid] is less; so all elements less than are not valid candidates for being median.&lt;br /&gt;   }&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt; &lt;/span&gt;&lt;span style="font-size:130%;"&gt;4. Repeat Step3 till you are left with either 2 or 3 elements then you do a comparision and find kth largest.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Time Complexity = O(log k)&lt;br /&gt;&lt;br /&gt;Example showing  Solution 2&lt;br /&gt;=========================&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;A[] = { 2, 3, 7, 12, 27}&lt;br /&gt;B[] = {1, 25, 32, 75, 89}&lt;br /&gt;&lt;br /&gt;After step2 i.e. k elements from both arrays&lt;br /&gt;A[mid] = 7 and B[mid] = 32&lt;br /&gt;&lt;br /&gt;B[mid] is Greater.&lt;br /&gt;&lt;br /&gt;Now array becomes after step3&lt;br /&gt;a[] = {7, 12, 27}&lt;br /&gt;b[] = { 1, 25, 32}&lt;br /&gt;&lt;br /&gt;a[mid] = 12 and b[mid] = 25&lt;br /&gt;After step3 the arrays become&lt;br /&gt;a[] = { 12, 27} -- skpping the left portion of smaller element array&lt;br /&gt;b[] = { 1, 25} -- skipping the right portion of larger element array&lt;br /&gt;&lt;br /&gt;Now a[mid] = 12 and b[mid] = 1&lt;br /&gt;after step3 the array becomes&lt;br /&gt;a[] = {12}&lt;br /&gt;b[] = {1,25}&lt;br /&gt;&lt;br /&gt;Find the median of  12, 1, 25 in O(1) which is 12 which is the 5th largest&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-2066135587802281458?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/2066135587802281458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=2066135587802281458' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/2066135587802281458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/2066135587802281458'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2007/09/find-k-th-largest-in-two-sorted-arrays.html' title='Find k-th largest in two sorted arrays'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-3794517533314679260</id><published>2007-09-12T02:27:00.001-07:00</published><updated>2007-09-12T02:30:59.562-07:00</updated><title type='text'>Easy One :: How many matches to decide winner</title><content type='html'>Suppose there are 125 tennis player for a tournamet. How many matches would be required to decide a winner.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-3794517533314679260?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/3794517533314679260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=3794517533314679260' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/3794517533314679260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/3794517533314679260'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2007/09/easy-one-how-many-matches-to-decide.html' title='Easy One :: How many matches to decide winner'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-6035701713610942226</id><published>2007-09-04T14:12:00.000-07:00</published><updated>2007-09-04T14:13:47.679-07:00</updated><title type='text'>Serialize a binary tree</title><content type='html'>How do you serialize a  binary tree to send it across a channel ?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-6035701713610942226?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/6035701713610942226/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=6035701713610942226' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/6035701713610942226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/6035701713610942226'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2007/09/serialize-binary-tree.html' title='Serialize a binary tree'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-8945856172720898742</id><published>2007-08-26T13:18:00.000-07:00</published><updated>2007-08-26T13:19:17.633-07:00</updated><title type='text'>Repositing 0's and 1's in array</title><content type='html'>you are given an array of integers containing only 0s and 1s. you have to place all the 0s in even position and 1s in odd position and if suppose no if 0s exceed no. of 1s or vice versa then keep them untouched. Do that in ONE PASS and WITHOUT taking EXTRA MEMORY.&lt;br /&gt;&lt;br /&gt;input array:&lt;br /&gt;{0 1 1 0 1 0 1 0 1 1 1 0 0 1 0 1 1 }&lt;br /&gt;output array:&lt;br /&gt;{0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-8945856172720898742?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/8945856172720898742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=8945856172720898742' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/8945856172720898742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/8945856172720898742'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2007/08/repositing-0s-and-1s-in-array.html' title='Repositing 0&apos;s and 1&apos;s in array'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-5545570324822105402</id><published>2007-08-09T00:13:00.000-07:00</published><updated>2007-08-09T00:15:02.278-07:00</updated><title type='text'>Represent 0 to 31 on two dices</title><content type='html'>You have two dices which are cubes..now i want you to represent all dates of a month starting from 01..31. What would the numbering on the dices look like.&lt;br /&gt;&lt;br /&gt;Note:: The method used is m&lt;a href="javascript:void(0)" onclick="return false;" tabindex="10"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;ore important in this case than the answer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-5545570324822105402?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/5545570324822105402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=5545570324822105402' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/5545570324822105402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/5545570324822105402'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2007/08/represent-0-to-31-on-two-dices.html' title='Represent 0 to 31 on two dices'/><author><name>Inder</name><uri>http://www.blogger.com/profile/00710368917455130474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_IH2nnVw2sV4/SpTaeDzkJqI/AAAAAAAAAV0/kE8SwbreUlc/s1600-R/OQAAAESGPgWmXWUjTx2MfdHcplFzGmJ4dwv3xcCugr5RdhajeR__PoAi9jkvE2pg729BAlW2vXnlRtG717KujX2OcQ0Am1T1UAzMEJ4JETcid5YI9Tz4zVowOICY.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-2556307581206136133</id><published>2007-08-03T01:29:00.000-07:00</published><updated>2007-08-03T01:35:26.250-07:00</updated><title type='text'>Find the nth number with m binary 1s</title><content type='html'>&lt;span style="font-family:times new roman;"&gt;&lt;span style="font-size:100%;"&gt;There is a series of numbers in ascending order. All these numbers&lt;br /&gt;have the same number of binary 1s in them. Given the number of 1 bits set in&lt;br /&gt;the numbers, write an algorithm/C program to find the nth number in&lt;br /&gt;the series.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-2556307581206136133?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/2556307581206136133/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=2556307581206136133' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/2556307581206136133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/2556307581206136133'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2007/08/find-nth-number-with-m-binary-1s.html' title='Find the nth number with m binary 1s'/><author><name>Sumant</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-3693016277021872719</id><published>2007-08-02T00:51:00.000-07:00</published><updated>2007-08-02T01:03:42.662-07:00</updated><title type='text'>Ternary Operator</title><content type='html'>&lt;span style="font-family: lucida grande;font-family:arial;font-size:130%;"  &gt;Represent x ? y : z as function :&lt;/span&gt;&lt;span style="font-family: lucida grande;font-size:130%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: lucida grande;font-family:arial;font-size:130%;"  &gt;int myternary(int x, int y, int z); &lt;/span&gt;&lt;span style="font-family: lucida grande;font-size:130%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: lucida grande;font-family:arial;font-size:130%;"  &gt;One can use ONLY ~ ! ^ &amp; + | &lt;&lt; &gt;&gt; . But no - or * or if-else.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic; font-family: lucida grande;font-family:arial;font-size:130%;"  &gt;PS: Have we had this puzzle  on this blog before? If so , sorry for reposting it.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-3693016277021872719?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/3693016277021872719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=3693016277021872719' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/3693016277021872719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/3693016277021872719'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2007/08/ternary-operator.html' title='Ternary Operator'/><author><name>5vd33p74</name><uri>http://www.blogger.com/profile/13209074557555210575</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3063930775303101240.post-8434284480295682193</id><published>2007-08-01T23:31:00.000-07:00</published><updated>2007-08-01T23:48:38.469-07:00</updated><title type='text'>Managers and Engineers</title><content type='html'>&lt;span style="font-weight: bold;"&gt;** This is a well known puzzle and does not reflect my prejudices :)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Verdana, Arial, Helvetica, sans-serif;font-size:85%;"&gt;The FBI has surrounded      the headquarters of the Debacle corporation. There are n people in the building.      Each person is either an engineer or a manager. All computer files have been      deleted, and all documents have been shredded by the managers. The problem      confronting the FBI interrogation team is to separate the people into these      two classes, so that all the managers can be locked up and all the engineers      can be freed. Each of the n people knows the status of all the others. The      interrogation consists entirely of asking person i if person j is an engineer      or a manager. The engineers always tell the truth. What makes it hard is that      the managers may not tell the truth. In fact, the managers are evil geniuses      who are conspiring to confuse the interrogators. &lt;/span&gt;   &lt;ol&gt;&lt;span style="font-family:Verdana, Arial, Helvetica, sans-serif;font-size:85%;"&gt;     &lt;li&gt;Under the        assumption that more than half of the people are engineers, can you find        a strategy for the FBI to find one engineer with at most n-1 questions?        &lt;/li&gt;    &lt;li&gt;       Is this possible in any number of questions if half the people are managers?        &lt;/li&gt;    &lt;li&gt;       Once an engineer is found, he/she can classify everybody else. Is there        a way to classify everybody in fewer questions? &lt;/li&gt;&lt;/span&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3063930775303101240-8434284480295682193?l=inder-gnu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inder-gnu.blogspot.com/feeds/8434284480295682193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3063930775303101240&amp;postID=8434284480295682193' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/8434284480295682193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3063930775303101240/posts/default/8434284480295682193'/><link rel='alternate' type='text/html' href='http://inder-gnu.blogspot.com/2007/08/managers-and-engineers.html' title='Managers and Engineers'/><author><name>5vd33p74</name><uri>http://www.blogger.com/profile/13209074557555210575</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry></feed>
