tag:blogger.com,1999:blog-68012254843220104502024-03-06T07:10:09.562+05:30Java DiscoverJava Discover is a Java technical blog mainly created for sharing our thoughts and programming question to the world of Java Programmers..Java Discoverhttp://www.blogger.com/profile/18049511268651382259noreply@blogger.comBlogger251125tag:blogger.com,1999:blog-6801225484322010450.post-8356516082684518532020-06-28T01:34:00.000+05:302020-06-28T01:34:08.570+05:30Leetcode: 463. Island Perimeter<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div style="background-color: white; box-sizing: border-box; color: #263238; font-family: -apple-system, system-ui, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 14px; margin-bottom: 1em;">
You are given a map in the form of a two-dimensional integer grid where 1 represents land and 0 represents water.</div>
<div style="background-color: white; box-sizing: border-box; color: #263238; font-family: -apple-system, system-ui, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 14px; margin-bottom: 1em;">
Grid cells are connected horizontally/vertically (not diagonally). The grid is completely surrounded by water, and there is exactly one island (i.e., one or more connected land cells).</div>
<div style="background-color: white; box-sizing: border-box; color: #263238; font-family: -apple-system, system-ui, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 14px; margin-bottom: 1em;">
The island doesn't have "lakes" (water inside that isn't connected to the water around the island). One cell is a square with side length 1. The grid is rectangular, width and height don't exceed 100. Determine the perimeter of the island.</div>
<div style="background-color: white; box-sizing: border-box; color: #263238; font-family: -apple-system, system-ui, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 14px; margin-bottom: 1em;">
<span style="font-weight: bolder;">Example:</span></div>
<pre style="background: rgb(247, 249, 250); border-radius: 3px; box-sizing: border-box; color: #263238; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 13px; line-height: 1.6; margin-bottom: 1em; overflow: auto; padding: 10px 15px; white-space: pre-wrap;"><span style="box-sizing: border-box; font-weight: bolder;">Input:</span>
[[0,1,0,0],
[1,1,1,0],
[0,1,0,0],
[1,1,0,0]]
<span style="box-sizing: border-box; font-weight: bolder;">Output:</span> 16
<span style="box-sizing: border-box; font-weight: bolder;">Explanation:</span> The perimeter is the 16 yellow stripes in the image below:
<img src="https://assets.leetcode.com/uploads/2018/10/12/island.png" style="border-style: none; box-sizing: border-box; height: 213px; max-width: 100%; vertical-align: middle; width: 221px;" /></pre>
<br />
<b>PROGRAM:</b><br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #008800; font-weight: bold;">class</span> <span style="color: #bb0066; font-weight: bold;">Solution</span> <span style="color: #333333;">{</span></pre>
<pre style="line-height: 125%; margin: 0;"> </pre>
<pre style="line-height: 125%; margin: 0;"> <span style="color: #008800; font-weight: bold;">public</span> <span style="color: #333399; font-weight: bold;">int</span> <span style="color: #0066bb; font-weight: bold;">islandPerimeter</span><span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span><span style="color: #333333;">[][]</span> grid<span style="color: #333333;">)</span> <span style="color: #333333;">{</span></pre>
<pre style="line-height: 125%; margin: 0;"> <span style="color: #333399; font-weight: bold;">int</span> wallCount <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">;</span>
<span style="color: #008800; font-weight: bold;">for</span><span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span> i<span style="color: #333333;">=</span><span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">;</span>i<span style="color: #333333;"><</span>grid<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">;</span>i<span style="color: #333333;">++){</span>
<span style="color: #008800; font-weight: bold;">for</span><span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span> j<span style="color: #333333;">=</span><span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">;</span>j<span style="color: #333333;"><</span>grid<span style="color: #333333;">[</span><span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">].</span><span style="color: #0000cc;">length</span><span style="color: #333333;">;</span>j<span style="color: #333333;">++){</span>
<span style="color: #008800; font-weight: bold;">if</span><span style="color: #333333;">(</span>grid<span style="color: #333333;">[</span>i<span style="color: #333333;">][</span>j<span style="color: #333333;">]</span> <span style="color: #333333;">==</span> <span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">){</span>
<span style="color: #008800; font-weight: bold;">if</span><span style="color: #333333;">(</span>j <span style="color: #333333;">==</span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">)</span> wallCount<span style="color: #333333;">++;</span>
<span style="color: #008800; font-weight: bold;">else</span> <span style="color: #0066bb; font-weight: bold;">if</span><span style="color: #333333;">(</span>j <span style="color: #333333;">></span> <span style="color: #0000dd; font-weight: bold;">0</span> <span style="color: #333333;">&&</span> grid<span style="color: #333333;">[</span>i<span style="color: #333333;">][</span>j<span style="color: #333333;">-</span><span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">]</span> <span style="color: #333333;">==</span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">)</span> wallCount<span style="color: #333333;">++;</span>
<span style="color: #008800; font-weight: bold;">if</span><span style="color: #333333;">(</span>i <span style="color: #333333;">==</span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">)</span> wallCount<span style="color: #333333;">++;</span>
<span style="color: #008800; font-weight: bold;">else</span> <span style="color: #0066bb; font-weight: bold;">if</span><span style="color: #333333;">(</span>i <span style="color: #333333;">></span> <span style="color: #0000dd; font-weight: bold;">0</span> <span style="color: #333333;">&&</span> grid<span style="color: #333333;">[</span>i<span style="color: #333333;">-</span><span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">][</span>j<span style="color: #333333;">]</span> <span style="color: #333333;">==</span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">)</span> wallCount<span style="color: #333333;">++;</span>
<span style="color: #008800; font-weight: bold;">if</span><span style="color: #333333;">(</span>j<span style="color: #333333;">+</span><span style="color: #0000dd; font-weight: bold;">1</span> <span style="color: #333333;">>=</span> grid<span style="color: #333333;">[</span><span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">].</span><span style="color: #0000cc;">length</span><span style="color: #333333;">)</span> wallCount<span style="color: #333333;">++;</span>
<span style="color: #008800; font-weight: bold;">else</span> <span style="color: #0066bb; font-weight: bold;">if</span><span style="color: #333333;">(</span>grid<span style="color: #333333;">[</span>i<span style="color: #333333;">][</span>j<span style="color: #333333;">+</span><span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">]</span> <span style="color: #333333;">==</span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">)</span> wallCount<span style="color: #333333;">++;</span>
<span style="color: #008800; font-weight: bold;">if</span><span style="color: #333333;">(</span>i<span style="color: #333333;">+</span><span style="color: #0000dd; font-weight: bold;">1</span> <span style="color: #333333;">>=</span> grid<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">)</span> wallCount<span style="color: #333333;">++;</span>
<span style="color: #008800; font-weight: bold;">else</span> <span style="color: #0066bb; font-weight: bold;">if</span><span style="color: #333333;">(</span>grid<span style="color: #333333;">[</span>i<span style="color: #333333;">+</span><span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">][</span>j<span style="color: #333333;">]</span> <span style="color: #333333;">==</span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">)</span> wallCount<span style="color: #333333;">++;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #008800; font-weight: bold;">return</span> wallCount<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
</pre>
</div>
<br />
<br />
<b>OUTPUT:</b><br />
<br />
16</div>
Java Discoverhttp://www.blogger.com/profile/18049511268651382259noreply@blogger.comtag:blogger.com,1999:blog-6801225484322010450.post-1473290115566287802019-07-30T22:37:00.001+05:302019-07-30T22:37:58.703+05:30Enum.ordinal() Method in Java<div dir="ltr" style="text-align: left;" trbidi="on">
Returns the ordinal of this enumeration constant (its position in its enum declaration, where the initial constant is assigned an ordinal of zero). For example, let's have weekdays in an enum starting from Monday, Tuesday till Sunday. So the ordinal of Monday will be 0, Tuesday will be 1, etc.,<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNv7N1__U7UqlMl2gcsL8mnh01AEFCOCIcKXXhUJrb3BG7fLI8oQt_kVAHnJ1ZMcMNRyUV43ApM0sUzz60nQtOKmmdeOtOPJtNEYX54GN4wtOs7aNkN_p9oQ-Q7y1W_q-DAFlOSN-eduQ/s1600/Screenshot+2019-07-30+at+10.35.24+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Enum.ordinal() Method in Java" border="0" data-original-height="586" data-original-width="1308" height="178" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNv7N1__U7UqlMl2gcsL8mnh01AEFCOCIcKXXhUJrb3BG7fLI8oQt_kVAHnJ1ZMcMNRyUV43ApM0sUzz60nQtOKmmdeOtOPJtNEYX54GN4wtOs7aNkN_p9oQ-Q7y1W_q-DAFlOSN-eduQ/s400/Screenshot+2019-07-30+at+10.35.24+PM.png" title="Enum.ordinal() Method in Java" width="400" /></a></div>
<br />
<br />
Let's see simple Java for the same.<br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #008800; font-weight: bold;">enum</span> Days<span style="color: #333333;">{</span>
<span style="color: #888888;">// 0 1 2 3 4 5 6 </span>
MONDAY<span style="color: #333333;">,</span> TUESDAY<span style="color: #333333;">,</span> WEDNESDAY<span style="color: #333333;">,</span> THURSDAY<span style="color: #333333;">,</span> FRIDAY<span style="color: #333333;">,</span> SATURDAY<span style="color: #333333;">,</span> SUNDAY<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #008800; font-weight: bold;">public</span> <span style="color: #008800; font-weight: bold;">class</span> <span style="color: #bb0066; font-weight: bold;">EnumOrdinal</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">public</span> <span style="color: #008800; font-weight: bold;">static</span> <span style="color: #333399; font-weight: bold;">void</span> <span style="color: #0066bb; font-weight: bold;">main</span><span style="color: #333333;">(</span>String<span style="color: #333333;">[]</span> args<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
Days mon <span style="color: #333333;">=</span> Days<span style="color: #333333;">.</span><span style="color: #0000cc;">MONDAY</span><span style="color: #333333;">;</span>
Days wed <span style="color: #333333;">=</span> Days<span style="color: #333333;">.</span><span style="color: #0000cc;">WEDNESDAY</span><span style="color: #333333;">;</span>
Days tus <span style="color: #333333;">=</span> Days<span style="color: #333333;">.</span><span style="color: #0000cc;">TUESDAY</span><span style="color: #333333;">;</span>
Days fri <span style="color: #333333;">=</span> Days<span style="color: #333333;">.</span><span style="color: #0000cc;">FRIDAY</span><span style="color: #333333;">;</span>
Days sun <span style="color: #333333;">=</span> Days<span style="color: #333333;">.</span><span style="color: #0000cc;">SUNDAY</span><span style="color: #333333;">;</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"Monday ordinal : "</span><span style="color: #333333;">+</span>mon<span style="color: #333333;">.</span><span style="color: #0000cc;">ordinal</span><span style="color: #333333;">());</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"Wednesday ordinal : "</span><span style="color: #333333;">+</span>wed<span style="color: #333333;">.</span><span style="color: #0000cc;">ordinal</span><span style="color: #333333;">());</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"Tuesday ordinal : "</span><span style="color: #333333;">+</span>tus<span style="color: #333333;">.</span><span style="color: #0000cc;">ordinal</span><span style="color: #333333;">());</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"Friday ordinal : "</span><span style="color: #333333;">+</span>fri<span style="color: #333333;">.</span><span style="color: #0000cc;">ordinal</span><span style="color: #333333;">());</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"Sunday ordinal : "</span><span style="color: #333333;">+</span>sun<span style="color: #333333;">.</span><span style="color: #0000cc;">ordinal</span><span style="color: #333333;">());</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
</pre>
</div>
<br />
<br />
<b>OUTPUT:</b><br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;">Monday ordinal <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">0</span>
Wednesday ordinal <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">2</span>
Tuesday ordinal <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">1</span>
Friday ordinal <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">4</span>
Sunday ordinal <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">6</span>
</pre>
</div>
</div>
Java Discoverhttp://www.blogger.com/profile/18049511268651382259noreply@blogger.comtag:blogger.com,1999:blog-6801225484322010450.post-91875881173433907122019-07-10T11:16:00.001+05:302019-07-10T11:16:44.323+05:30Find the Occurrences Of Each Character In a String<div dir="ltr" style="text-align: left;" trbidi="on">
Find the Occurrences Of Each Character In a String without using collection.<br />
Here we are going to create simple array to store the character occurrence. If we look at ASCII value of each character including space then it starts from 32 to 126. So we will create array size of 94 which can hold all the character occurrences.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbFfM2ghvoGAGLWuPnEGzE0GNQPlw6AoihCIEHEr0_RqLLMjfzxX4H1GLOCob2aXoDuMc1FVmCEFYXS8SK9Iv-TlxqajeJJCSwiTit63EVx1WZIVOHTPcjiIr4PnWU7jtdK-S1ZoxAI8Y/s1600/Find+the+Occurrences+Of+Each+Character+In+a+String.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Find the Occurrences Of Each Character In a String" border="0" data-original-height="1098" data-original-width="1144" height="383" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbFfM2ghvoGAGLWuPnEGzE0GNQPlw6AoihCIEHEr0_RqLLMjfzxX4H1GLOCob2aXoDuMc1FVmCEFYXS8SK9Iv-TlxqajeJJCSwiTit63EVx1WZIVOHTPcjiIr4PnWU7jtdK-S1ZoxAI8Y/s400/Find+the+Occurrences+Of+Each+Character+In+a+String.png" title="Find the Occurrences Of Each Character In a String" width="400" /></a></div>
<br />
<br />
Let's see simple example in Java how to implement in a simple way.<br />
<br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #008800; font-weight: bold;">public</span> <span style="color: #008800; font-weight: bold;">class</span> <span style="color: #bb0066; font-weight: bold;">CharacterOccurrance</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">public</span> <span style="color: #008800; font-weight: bold;">static</span> <span style="color: #333399; font-weight: bold;">void</span> <span style="color: #0066bb; font-weight: bold;">main</span><span style="color: #333333;">(</span>String<span style="color: #333333;">[]</span> args<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
String str <span style="color: #333333;">=</span> <span style="background-color: #fff0f0;">"Java Discover~"</span><span style="color: #333333;">;</span>
CharacterOccurrance obj <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">new</span> CharacterOccurrance<span style="color: #333333;">();</span>
<span style="color: #333399; font-weight: bold;">int</span><span style="color: #333333;">[]</span> occurrance <span style="color: #333333;">=</span> obj<span style="color: #333333;">.</span><span style="color: #0000cc;">findCharOccurrance</span><span style="color: #333333;">(</span>str<span style="color: #333333;">);</span>
obj<span style="color: #333333;">.</span><span style="color: #0000cc;">printOccurrance</span><span style="color: #333333;">(</span>occurrance<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #008800; font-weight: bold;">public</span> <span style="color: #333399; font-weight: bold;">int</span><span style="color: #333333;">[]</span> <span style="color: #0066bb; font-weight: bold;">findCharOccurrance</span><span style="color: #333333;">(</span>String str<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #333399; font-weight: bold;">int</span><span style="color: #333333;">[]</span> occurrance <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">new</span> <span style="color: #333399; font-weight: bold;">int</span><span style="color: #333333;">[</span><span style="color: #0000dd; font-weight: bold;">95</span><span style="color: #333333;">];</span>
<span style="color: #008800; font-weight: bold;">for</span> <span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span> i <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">;</span> i <span style="color: #333333;"><</span> str<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">();</span> i<span style="color: #333333;">++)</span> <span style="color: #333333;">{</span>
<span style="color: #333399; font-weight: bold;">int</span> index <span style="color: #333333;">=</span> str<span style="color: #333333;">.</span><span style="color: #0000cc;">charAt</span><span style="color: #333333;">(</span>i<span style="color: #333333;">);</span>
occurrance<span style="color: #333333;">[</span>index <span style="color: #333333;">-</span> <span style="color: #0000dd; font-weight: bold;">32</span><span style="color: #333333;">]++;</span>
<span style="color: #333333;">}</span>
<span style="color: #008800; font-weight: bold;">return</span> occurrance<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #008800; font-weight: bold;">public</span> <span style="color: #333399; font-weight: bold;">void</span> <span style="color: #0066bb; font-weight: bold;">printOccurrance</span><span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span><span style="color: #333333;">[]</span> occurrance<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"Character : Occurrance"</span><span style="color: #333333;">);</span>
<span style="color: #008800; font-weight: bold;">for</span> <span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span> i <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">;</span> i <span style="color: #333333;"><</span> occurrance<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">;</span> i<span style="color: #333333;">++)</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">if</span> <span style="color: #333333;">(</span>occurrance<span style="color: #333333;">[</span>i<span style="color: #333333;">]</span> <span style="color: #333333;">></span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #333399; font-weight: bold;">char</span> ch <span style="color: #333333;">=</span> <span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">char</span><span style="color: #333333;">)</span> <span style="color: #333333;">(</span>i <span style="color: #333333;">+</span> <span style="color: #0000dd; font-weight: bold;">32</span><span style="color: #333333;">);</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span>ch <span style="color: #333333;">+</span> <span style="background-color: #fff0f0;">" \t : "</span> <span style="color: #333333;">+</span> occurrance<span style="color: #333333;">[</span>i<span style="color: #333333;">]);</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
</pre>
</div>
<br />
<br />
<br />
<b>OUTPUT:</b><br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;">Character <span style="color: #333333;">:</span> Occurrance
<span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">1 <----- Space</span>
D <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">1</span>
J <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">1</span>
a <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">2</span>
c <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">1</span>
e <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">1</span>
i <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">1</span>
o <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">1</span>
r <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">1</span>
s <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">1</span>
v <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">2</span>
<span style="color: #333333;">~</span> <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">1</span>
</pre>
</div>
</div>
Java Discoverhttp://www.blogger.com/profile/18049511268651382259noreply@blogger.comtag:blogger.com,1999:blog-6801225484322010450.post-22383854812278166312019-06-27T23:41:00.001+05:302019-06-27T23:41:09.535+05:30Longest palindrome Sub-sequence from the given String using Dynamic Programming<div dir="ltr" style="text-align: left;" trbidi="on">
Write a program to find the longest sub-sequence palindrome from the given string by using dynamic programming. For example<br />
<br />
Input String : ABCDQRDC<br />
<br />
Longest sub-sequence palindrome: 5<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSHsPPn0t2kiME6pIGr2G0mrI_0YVUCy4qZ2I3OQKSwey0cN3wu93KNzAuh8vzoc3QnhhB2ii8M2D1PrgXgmCqXjJ_2tfMPAM9y5BOJzIj5ijBspjKdOoFCV1ZW5rsQn2Ygnfv421LcU4/s1600/Screenshot+2019-01-10+at+11.15.40+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Longest palindrome Sub-sequence from the given String using Dynamic Programming" border="0" data-original-height="308" data-original-width="628" height="156" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSHsPPn0t2kiME6pIGr2G0mrI_0YVUCy4qZ2I3OQKSwey0cN3wu93KNzAuh8vzoc3QnhhB2ii8M2D1PrgXgmCqXjJ_2tfMPAM9y5BOJzIj5ijBspjKdOoFCV1ZW5rsQn2Ygnfv421LcU4/s320/Screenshot+2019-01-10+at+11.15.40+PM.png" title="Longest palindrome Sub-sequence from the given String using Dynamic Programming" width="320" /></a></div>
<br />
<ul style="text-align: left;">
<li> So let's see how we will solve and find the longest subsequence palindrome using dynamic programming. </li>
<li><br /></li>
<li>Construct the solution matrix of size NxN where N is the length of given string. </li>
<li>We will calculate the size of each character sequence palindrome size and will the memorised in the solution matrix which will referred for the next incremental sequence.</li>
<li>For example in above example all strings of 1 character will be palindrome size of 1. A, B, C, D, Q, R, D, C</li>
<li>On next cycle it will add another character and makes 2 character string like </li>
<li>AB, BC, CD, DQ, QR, RD, DC and goes on like </li>
<li>ABC, BCD, CDQ, DQR, QRD, RDC etc.,</li>
<li>Each sequences palindrome size will be stored in the solution array and finally returns the maximum size as output.</li>
</ul>
<div>
Now lets see simple Java code </div>
<div>
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"> <span style="color: #008800; font-weight: bold;">public</span> <span style="color: #008800; font-weight: bold;">class</span> <span style="color: #bb0066; font-weight: bold;">LongestPalindromeSequence</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">public</span> <span style="color: #008800; font-weight: bold;">static</span> <span style="color: #333399; font-weight: bold;">void</span> <span style="color: #0066bb; font-weight: bold;">main</span><span style="color: #333333;">(</span>String<span style="color: #333333;">[]</span> args<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
String str <span style="color: #333333;">=</span> <span style="background-color: #fff0f0;">"ABCDQRDC"</span><span style="color: #333333;">;</span>
LongestPalindromeSequence obj <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">new</span> LongestPalindromeSequence<span style="color: #333333;">();</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"\nLength of Longest palindrome subsequence : "</span> <span style="color: #333333;">+</span> obj<span style="color: #333333;">.</span><span style="color: #0000cc;">lps</span><span style="color: #333333;">(</span>str<span style="color: #333333;">));</span>
<span style="color: #333333;">}</span>
<span style="color: #008800; font-weight: bold;">public</span> <span style="color: #333399; font-weight: bold;">int</span> <span style="color: #0066bb; font-weight: bold;">lps</span><span style="color: #333333;">(</span>String seq<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #333399; font-weight: bold;">int</span> n <span style="color: #333333;">=</span> seq<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">();</span>
<span style="color: #333399; font-weight: bold;">int</span> j<span style="color: #333333;">,</span> k<span style="color: #333333;">,</span> i<span style="color: #333333;">;</span>
<span style="color: #333399; font-weight: bold;">int</span> L<span style="color: #333333;">[][]</span> <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">new</span> <span style="color: #333399; font-weight: bold;">int</span><span style="color: #333333;">[</span>n<span style="color: #333333;">][</span>n<span style="color: #333333;">];</span>
<span style="color: #888888;">// Strings of 1 character will be palindrome size of 1 </span>
<span style="color: #888888;">// starting with upper matrix and all single character falls diagonally and size will be 1</span>
<span style="color: #008800; font-weight: bold;">for</span> <span style="color: #333333;">(</span>j <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">;</span> j <span style="color: #333333;"><</span> n<span style="color: #333333;">;</span> j<span style="color: #333333;">++)</span>
L<span style="color: #333333;">[</span>j<span style="color: #333333;">][</span>j<span style="color: #333333;">]</span> <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">;</span>
<span style="color: #008800; font-weight: bold;">for</span> <span style="color: #333333;">(</span>i <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">2</span><span style="color: #333333;">;</span> i <span style="color: #333333;"><=</span> n<span style="color: #333333;">;</span> i<span style="color: #333333;">++)</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">for</span> <span style="color: #333333;">(</span>j <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">;</span> j <span style="color: #333333;"><</span> n <span style="color: #333333;">-</span> i <span style="color: #333333;">+</span> <span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">;</span> j<span style="color: #333333;">++)</span> <span style="color: #333333;">{</span>
k <span style="color: #333333;">=</span> j <span style="color: #333333;">+</span> i <span style="color: #333333;">-</span> <span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">;</span>
<span style="color: #008800; font-weight: bold;">if</span> <span style="color: #333333;">(</span>seq<span style="color: #333333;">.</span><span style="color: #0000cc;">charAt</span><span style="color: #333333;">(</span>j<span style="color: #333333;">)</span> <span style="color: #333333;">==</span> seq<span style="color: #333333;">.</span><span style="color: #0000cc;">charAt</span><span style="color: #333333;">(</span>k<span style="color: #333333;">))</span> <span style="color: #333333;">{</span>
L<span style="color: #333333;">[</span>j<span style="color: #333333;">][</span>k<span style="color: #333333;">]</span> <span style="color: #333333;">=</span> L<span style="color: #333333;">[</span>j <span style="color: #333333;">+</span> <span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">][</span>k <span style="color: #333333;">-</span> <span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">]</span> <span style="color: #333333;">+</span> <span style="color: #0000dd; font-weight: bold;">2</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span> <span style="color: #008800; font-weight: bold;">else</span> <span style="color: #333333;">{</span>
L<span style="color: #333333;">[</span>j<span style="color: #333333;">][</span>k<span style="color: #333333;">]</span> <span style="color: #333333;">=</span> Math<span style="color: #333333;">.</span><span style="color: #0000cc;">max</span><span style="color: #333333;">(</span>L<span style="color: #333333;">[</span>j<span style="color: #333333;">][</span>k <span style="color: #333333;">-</span> <span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">],</span> L<span style="color: #333333;">[</span>j <span style="color: #333333;">+</span> <span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">][</span>k<span style="color: #333333;">]);</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #888888;">/*System.out.println("Final solution Matrix :::: ");</span>
<span style="color: #888888;"> for (j = 0; j < n; j++) {</span>
<span style="color: #888888;"> System.out.print(seq.charAt(j) +" - ");</span>
<span style="color: #888888;"> for (k = 0; k < n; k++) {</span>
<span style="color: #888888;"> System.out.print(L[j][k] + "\t");</span>
<span style="color: #888888;"> }</span>
<span style="color: #888888;"> System.out.println();</span>
<span style="color: #888888;"> }*/</span>
<span style="color: #008800; font-weight: bold;">return</span> L<span style="color: #333333;">[</span><span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">][</span>n <span style="color: #333333;">-</span> <span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">];</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
</pre>
</div>
</div>
<div>
</div>
<div>
<br /></div>
<div>
<b>OUTPUT:</b></div>
<div>
<br /></div>
<div>
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;">Length of Longest palindrome subsequence <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">5</span>
</pre>
</div>
</div>
</div>
Java Discoverhttp://www.blogger.com/profile/18049511268651382259noreply@blogger.comtag:blogger.com,1999:blog-6801225484322010450.post-25672509193076515262019-06-27T23:37:00.000+05:302019-06-28T00:19:02.801+05:30How to create a graph using Java<div dir="ltr" style="text-align: left;" trbidi="on">
Let's see simple graph creation using core java and printing all the vertex along with list of edges which goes from that particular Vertex.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifNjOZ5FGln6DXMcO56_9qZu3W2uU6PH0FT6depxfbRd_UZcLbzzE2XJr2HHGCrM0cLSKpD6q5xwW9U7hyETlm_Mzi1z_W9LiXEY6SZFN8H2aAtQUp8RszI012dxY-u1OY-X1PJbTdhV0/s1600/How+to+create+graph+in+java.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="How to create a graph using Java" border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifNjOZ5FGln6DXMcO56_9qZu3W2uU6PH0FT6depxfbRd_UZcLbzzE2XJr2HHGCrM0cLSKpD6q5xwW9U7hyETlm_Mzi1z_W9LiXEY6SZFN8H2aAtQUp8RszI012dxY-u1OY-X1PJbTdhV0/s320/How+to+create+graph+in+java.jpg" title="How to create a graph using Java" width="320" /></a></div>
<br />
<br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #008800; font-weight: bold;">public</span> <span style="color: #008800; font-weight: bold;">class</span> <span style="color: #bb0066; font-weight: bold;">MyGraph</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">public</span> <span style="color: #008800; font-weight: bold;">static</span> <span style="color: #333399; font-weight: bold;">void</span> <span style="color: #0066bb; font-weight: bold;">main</span><span style="color: #333333;">(</span>String<span style="color: #333333;">[]</span> args<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #888888;">/* Initilize graph with 5 vertex and as </span>
<span style="color: #888888;"> * going to be directed graph</span>
<span style="color: #888888;"> */</span>
Graph myGra <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">new</span> Graph<span style="color: #333333;">(</span><span style="color: #0000dd; font-weight: bold;">5</span><span style="color: #333333;">,</span> <span style="background-color: #fff0f0;">"directed"</span><span style="color: #333333;">);</span>
<span style="color: #888888;">/*</span>
<span style="color: #888888;"> * Add vertex </span>
<span style="color: #888888;"> */</span>
myGra<span style="color: #333333;">.</span><span style="color: #0000cc;">addVertex</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"A"</span><span style="color: #333333;">);</span>
myGra<span style="color: #333333;">.</span><span style="color: #0000cc;">addVertex</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"B"</span><span style="color: #333333;">);</span>
myGra<span style="color: #333333;">.</span><span style="color: #0000cc;">addVertex</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"C"</span><span style="color: #333333;">);</span>
myGra<span style="color: #333333;">.</span><span style="color: #0000cc;">addVertex</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"D"</span><span style="color: #333333;">);</span>
myGra<span style="color: #333333;">.</span><span style="color: #0000cc;">addVertex</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"E"</span><span style="color: #333333;">);</span>
<span style="color: #888888;">/*</span>
<span style="color: #888888;"> * Add edges between each vertex and their distance </span>
<span style="color: #888888;"> */</span>
myGra<span style="color: #333333;">.</span><span style="color: #0000cc;">addEdge</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"A"</span><span style="color: #333333;">,</span> <span style="background-color: #fff0f0;">"B"</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">5</span><span style="color: #333333;">);</span>
myGra<span style="color: #333333;">.</span><span style="color: #0000cc;">addEdge</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"A"</span><span style="color: #333333;">,</span> <span style="background-color: #fff0f0;">"E"</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">);</span>
myGra<span style="color: #333333;">.</span><span style="color: #0000cc;">addEdge</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"B"</span><span style="color: #333333;">,</span> <span style="background-color: #fff0f0;">"C"</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">2</span><span style="color: #333333;">);</span>
myGra<span style="color: #333333;">.</span><span style="color: #0000cc;">addEdge</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"C"</span><span style="color: #333333;">,</span> <span style="background-color: #fff0f0;">"D"</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">2</span><span style="color: #333333;">);</span>
myGra<span style="color: #333333;">.</span><span style="color: #0000cc;">addEdge</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"E"</span><span style="color: #333333;">,</span> <span style="background-color: #fff0f0;">"D"</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">2</span><span style="color: #333333;">);</span>
myGra<span style="color: #333333;">.</span><span style="color: #0000cc;">addEdge</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"E"</span><span style="color: #333333;">,</span> <span style="background-color: #fff0f0;">"A"</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">2</span><span style="color: #333333;">);</span>
<span style="color: #888888;">// Print the created graph</span>
myGra<span style="color: #333333;">.</span><span style="color: #0000cc;">printMyGraph</span><span style="color: #333333;">();</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
</pre>
</div>
<br />
<br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #008800; font-weight: bold;">public</span> <span style="color: #008800; font-weight: bold;">class</span> <span style="color: #bb0066; font-weight: bold;">Graph</span> <span style="color: #333333;">{</span>
<span style="color: #888888;">// Graph direction (directed / undirected graph)</span>
<span style="color: #008800; font-weight: bold;">private</span> <span style="color: #333399; font-weight: bold;">boolean</span> undirected <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">true</span><span style="color: #333333;">;</span>
<span style="color: #888888;">// No. of vertex in the graph</span>
<span style="color: #008800; font-weight: bold;">private</span> Vertex<span style="color: #333333;">[]</span> arrayOfVertex<span style="color: #333333;">;</span>
<span style="color: #008800; font-weight: bold;">private</span> <span style="color: #333399; font-weight: bold;">int</span> indexCounter <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">;</span>
<span style="color: #888888;">// Constructor to create graph vertex </span>
<span style="color: #008800; font-weight: bold;">public</span> <span style="color: #0066bb; font-weight: bold;">Graph</span><span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span> noOfVertex<span style="color: #333333;">,</span> String graphType<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">if</span> <span style="color: #333333;">(</span>graphType<span style="color: #333333;">.</span><span style="color: #0000cc;">equalsIgnoreCase</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"directed"</span><span style="color: #333333;">))</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">this</span><span style="color: #333333;">.</span><span style="color: #0000cc;">undirected</span> <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">false</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
arrayOfVertex <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">new</span> Vertex<span style="color: #333333;">[</span>noOfVertex<span style="color: #333333;">];</span>
<span style="color: #333333;">}</span>
<span style="color: #888888;">// Vertex class</span>
<span style="color: #008800; font-weight: bold;">class</span> <span style="color: #bb0066; font-weight: bold;">Vertex</span> <span style="color: #333333;">{</span>
<span style="color: #888888;">// Name of the Vertex</span>
<span style="color: #008800; font-weight: bold;">private</span> String name<span style="color: #333333;">;</span>
<span style="color: #888888;">// Holds the list of all edges from current vertex </span>
<span style="color: #008800; font-weight: bold;">private</span> Edge edge<span style="color: #333333;">;</span>
<span style="color: #888888;">// Create vertex </span>
<span style="color: #008800; font-weight: bold;">public</span> <span style="color: #0066bb; font-weight: bold;">Vertex</span><span style="color: #333333;">(</span>String name<span style="color: #333333;">,</span> Edge aNode<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">this</span><span style="color: #333333;">.</span><span style="color: #0000cc;">name</span> <span style="color: #333333;">=</span> name<span style="color: #333333;">;</span>
<span style="color: #008800; font-weight: bold;">this</span><span style="color: #333333;">.</span><span style="color: #0000cc;">edge</span> <span style="color: #333333;">=</span> aNode<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #888888;">// Edge between 2 Vertex</span>
<span style="color: #008800; font-weight: bold;">class</span> <span style="color: #bb0066; font-weight: bold;">Edge</span> <span style="color: #333333;">{</span>
<span style="color: #888888;">// Destination vertex Id</span>
<span style="color: #008800; font-weight: bold;">private</span> <span style="color: #333399; font-weight: bold;">int</span> vertexId<span style="color: #333333;">;</span>
<span style="color: #888888;">// In list point to next edge if its else null </span>
<span style="color: #008800; font-weight: bold;">private</span> Edge next<span style="color: #333333;">;</span>
<span style="color: #888888;">// Weight of current edge</span>
<span style="color: #008800; font-weight: bold;">private</span> <span style="color: #333399; font-weight: bold;">int</span> weight<span style="color: #333333;">;</span>
<span style="color: #888888;">// Create edge</span>
<span style="color: #008800; font-weight: bold;">public</span> <span style="color: #0066bb; font-weight: bold;">Edge</span><span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span> vertexId<span style="color: #333333;">,</span> Edge next<span style="color: #333333;">,</span> <span style="color: #333399; font-weight: bold;">int</span> weight<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">this</span><span style="color: #333333;">.</span><span style="color: #0000cc;">vertexId</span> <span style="color: #333333;">=</span> vertexId<span style="color: #333333;">;</span>
<span style="color: #008800; font-weight: bold;">this</span><span style="color: #333333;">.</span><span style="color: #0000cc;">next</span> <span style="color: #333333;">=</span> next<span style="color: #333333;">;</span>
<span style="color: #008800; font-weight: bold;">this</span><span style="color: #333333;">.</span><span style="color: #0000cc;">weight</span> <span style="color: #333333;">=</span> weight<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #888888;">// Adding Vertex </span>
<span style="color: #008800; font-weight: bold;">public</span> <span style="color: #333399; font-weight: bold;">void</span> <span style="color: #0066bb; font-weight: bold;">addVertex</span><span style="color: #333333;">(</span>String vertexName<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
arrayOfVertex<span style="color: #333333;">[</span>indexCounter<span style="color: #333333;">]</span> <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">new</span> Vertex<span style="color: #333333;">(</span>vertexName<span style="color: #333333;">,</span> <span style="color: #008800; font-weight: bold;">null</span><span style="color: #333333;">);</span>
indexCounter<span style="color: #333333;">++;</span>
<span style="color: #333333;">}</span>
<span style="color: #888888;">// Adding Edge</span>
<span style="color: #008800; font-weight: bold;">public</span> <span style="color: #333399; font-weight: bold;">void</span> <span style="color: #0066bb; font-weight: bold;">addEdge</span><span style="color: #333333;">(</span>String sVertex<span style="color: #333333;">,</span> String dVertex<span style="color: #333333;">,</span> <span style="color: #333399; font-weight: bold;">int</span> weight<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #333399; font-weight: bold;">int</span> sId <span style="color: #333333;">=</span> indexOfName<span style="color: #333333;">(</span>sVertex<span style="color: #333333;">);</span>
<span style="color: #333399; font-weight: bold;">int</span> dId <span style="color: #333333;">=</span> indexOfName<span style="color: #333333;">(</span>dVertex<span style="color: #333333;">);</span>
<span style="color: #888888;">/*</span>
<span style="color: #888888;"> * Find source and destination vertexId and create new Edge and </span>
<span style="color: #888888;"> * point it to source edge link</span>
<span style="color: #888888;"> */</span>
arrayOfVertex<span style="color: #333333;">[</span>sId<span style="color: #333333;">].</span><span style="color: #0000cc;">edge</span> <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">new</span> Edge<span style="color: #333333;">(</span>dId<span style="color: #333333;">,</span> arrayOfVertex<span style="color: #333333;">[</span>sId<span style="color: #333333;">].</span><span style="color: #0000cc;">edge</span><span style="color: #333333;">,</span> weight<span style="color: #333333;">);</span>
<span style="color: #888888;">/*</span>
<span style="color: #888888;"> * If undirected then create 2 edge's between source and destination and </span>
<span style="color: #888888;"> * destination to source </span>
<span style="color: #888888;"> */</span>
<span style="color: #008800; font-weight: bold;">if</span> <span style="color: #333333;">(</span>undirected<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
arrayOfVertex<span style="color: #333333;">[</span>dId<span style="color: #333333;">].</span><span style="color: #0000cc;">edge</span> <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">new</span> Edge<span style="color: #333333;">(</span>sId<span style="color: #333333;">,</span> arrayOfVertex<span style="color: #333333;">[</span>dId<span style="color: #333333;">].</span><span style="color: #0000cc;">edge</span><span style="color: #333333;">,</span> weight<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #888888;">/*</span>
<span style="color: #888888;"> * Getting indexId of given vertex name</span>
<span style="color: #888888;"> */</span>
<span style="color: #008800; font-weight: bold;">private</span> <span style="color: #333399; font-weight: bold;">int</span> <span style="color: #0066bb; font-weight: bold;">indexOfName</span><span style="color: #333333;">(</span>String name<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">for</span> <span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span> v <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">;</span> v <span style="color: #333333;"><</span> arrayOfVertex<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">;</span> v<span style="color: #333333;">++)</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">if</span> <span style="color: #333333;">(</span>arrayOfVertex<span style="color: #333333;">[</span>v<span style="color: #333333;">].</span><span style="color: #0000cc;">name</span><span style="color: #333333;">.</span><span style="color: #0000cc;">equals</span><span style="color: #333333;">(</span>name<span style="color: #333333;">))</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">return</span> v<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #008800; font-weight: bold;">return</span> <span style="color: #333333;">-</span><span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #888888;">/*</span>
<span style="color: #888888;"> * Print the graph in vertex order and listing all outgoing edges from that vertex</span>
<span style="color: #888888;"> */</span>
<span style="color: #008800; font-weight: bold;">public</span> <span style="color: #333399; font-weight: bold;">void</span> <span style="color: #0066bb; font-weight: bold;">printMyGraph</span><span style="color: #333333;">()</span> <span style="color: #333333;">{</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"VERTEX\t----> EDGES WITH WEIGHT"</span><span style="color: #333333;">);</span>
<span style="color: #008800; font-weight: bold;">for</span> <span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span> v <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">;</span> v <span style="color: #333333;"><</span> arrayOfVertex<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">;</span> v<span style="color: #333333;">++)</span> <span style="color: #333333;">{</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">print</span><span style="color: #333333;">(</span>arrayOfVertex<span style="color: #333333;">[</span>v<span style="color: #333333;">].</span><span style="color: #0000cc;">name</span> <span style="color: #333333;">+</span><span style="background-color: #fff0f0;">" \t ----> "</span><span style="color: #333333;">);</span>
<span style="color: #008800; font-weight: bold;">for</span> <span style="color: #333333;">(</span>Edge aNode <span style="color: #333333;">=</span> arrayOfVertex<span style="color: #333333;">[</span>v<span style="color: #333333;">].</span><span style="color: #0000cc;">edge</span><span style="color: #333333;">;</span> aNode <span style="color: #333333;">!=</span> <span style="color: #008800; font-weight: bold;">null</span><span style="color: #333333;">;</span> aNode <span style="color: #333333;">=</span> aNode<span style="color: #333333;">.</span><span style="color: #0000cc;">next</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">print</span><span style="color: #333333;">(</span> <span style="background-color: #fff0f0;">"<==>"</span><span style="color: #333333;">+</span> arrayOfVertex<span style="color: #333333;">[</span>aNode<span style="color: #333333;">.</span><span style="color: #0000cc;">vertexId</span><span style="color: #333333;">].</span><span style="color: #0000cc;">name</span> <span style="color: #333333;">+</span> <span style="background-color: #fff0f0;">":"</span> <span style="color: #333333;">+</span> aNode<span style="color: #333333;">.</span><span style="color: #0000cc;">weight</span><span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">();</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
</pre>
</div>
<br />
<br />
<br />
OUTPUT:<br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><b>VERTEX <span style="color: #333333;">----></span> EDGES WITH WEIGHT
</b>A <span style="color: #333333;">----></span> <span style="color: #333333;"><==></span><span style="color: #997700; font-weight: bold;">E:</span><span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;"><==></span><span style="color: #997700; font-weight: bold;">B:</span><span style="color: #0000dd; font-weight: bold;">5</span>
B <span style="color: #333333;">----></span> <span style="color: #333333;"><==></span><span style="color: #997700; font-weight: bold;">C:</span><span style="color: #0000dd; font-weight: bold;">2</span>
C <span style="color: #333333;">----></span> <span style="color: #333333;"><==></span><span style="color: #997700; font-weight: bold;">D:</span><span style="color: #0000dd; font-weight: bold;">2</span>
D <span style="color: #333333;">----></span>
E <span style="color: #333333;">----></span> <span style="color: #333333;"><==></span><span style="color: #997700; font-weight: bold;">A:</span><span style="color: #0000dd; font-weight: bold;">2</span><span style="color: #333333;"><==></span><span style="color: #997700; font-weight: bold;">D:</span><span style="color: #0000dd; font-weight: bold;">2</span>
</pre>
</div>
</div>
Java Discoverhttp://www.blogger.com/profile/18049511268651382259noreply@blogger.comtag:blogger.com,1999:blog-6801225484322010450.post-67216052221023687942019-02-07T14:54:00.000+05:302019-02-07T14:56:39.892+05:30Add two numbers represented by linked lists using recursive<div dir="ltr" style="text-align: left;" trbidi="on">
Add two numbers represented by linked lists using recursive method and generate the 3td linked with addition of 1st and 2nd linked list.<br />
<br />
For example:<br />
<br />
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
span.s1 {color: #7f0055}
span.s2 {color: #6a3e3e}
span.Apple-tab-span {white-space:pre}
</style>
<br />
<div class="p1">
<span class="s2">val_1</span>[] = { <span class="Apple-converted-space"> </span>7, 6, 5 }</div>
<div class="p1">
<span class="s2">val_2</span>[] = { 9, 6, 4, 1, 6 }</div>
<br />
<br />
then the output should be {<span style="font-family: "monaco"; font-size: 11px;">9, 7, 1, 8, 1</span>} basically its addition of 1st and 2nd linked lists as same normal 2 numbers addition.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0IbyIRaq21gQgYGukh4pQ8BHL6au8BUjfIfEcHVvS5h3AwGjSX3ILB9aqw4zPFarK1ml59vGO2iro0lVjEi8NMZM-lq_eSKUnmlBOSk8c_VUFKyT3xm8RCrc5WwNXlcpdhMh8kEhN5AE/s1600/Screenshot+2019-02-07+at+2.49.41+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Add two numbers represented by linked lists using recursive" border="0" data-original-height="188" data-original-width="312" height="192" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0IbyIRaq21gQgYGukh4pQ8BHL6au8BUjfIfEcHVvS5h3AwGjSX3ILB9aqw4zPFarK1ml59vGO2iro0lVjEi8NMZM-lq_eSKUnmlBOSk8c_VUFKyT3xm8RCrc5WwNXlcpdhMh8kEhN5AE/s320/Screenshot+2019-02-07+at+2.49.41+PM.png" title="Add two numbers represented by linked lists using recursive" width="320" /></a></div>
<br />
<br />
Let's see simple java code to create linked lists using input array and to get the addition of 2 linked list in 3rd linked list.<br />
<br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #008800; font-weight: bold;">public</span> <span style="color: #008800; font-weight: bold;">class</span> <span style="color: #bb0066; font-weight: bold;">SumOfTwoLL</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">class</span> <span style="color: #bb0066; font-weight: bold;">NODE</span> <span style="color: #333333;">{</span>
<span style="color: #333399; font-weight: bold;">int</span> data<span style="color: #333333;">;</span>
NODE next<span style="color: #333333;">;</span>
<span style="color: #008800; font-weight: bold;">public</span> <span style="color: #0066bb; font-weight: bold;">NODE</span><span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span> data<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">this</span><span style="color: #333333;">.</span><span style="color: #0000cc;">data</span> <span style="color: #333333;">=</span> data<span style="color: #333333;">;</span>
<span style="color: #008800; font-weight: bold;">this</span><span style="color: #333333;">.</span><span style="color: #0000cc;">next</span> <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">null</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #008800; font-weight: bold;">public</span> <span style="color: #008800; font-weight: bold;">static</span> <span style="color: #333399; font-weight: bold;">void</span> <span style="color: #0066bb; font-weight: bold;">main</span><span style="color: #333333;">(</span>String<span style="color: #333333;">[]</span> args<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
SumOfTwoLL obj <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">new</span> SumOfTwoLL<span style="color: #333333;">();</span>
<span style="color: #333399; font-weight: bold;">int</span> val_1<span style="color: #333333;">[]</span> <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">new</span> <span style="color: #333399; font-weight: bold;">int</span><span style="color: #333333;">[]</span> <span style="color: #333333;">{</span> <span style="color: #0000dd; font-weight: bold;">7</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">6</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">5</span> <span style="color: #333333;">};</span>
<span style="color: #333399; font-weight: bold;">int</span> val_2<span style="color: #333333;">[]</span> <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">new</span> <span style="color: #333399; font-weight: bold;">int</span><span style="color: #333333;">[]</span> <span style="color: #333333;">{</span> <span style="color: #0000dd; font-weight: bold;">9</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">6</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">4</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">6</span> <span style="color: #333333;">};</span>
<span style="color: #888888;">// Create linked list out of arrays</span>
NODE first <span style="color: #333333;">=</span> obj<span style="color: #333333;">.</span><span style="color: #0000cc;">createLinkedList</span><span style="color: #333333;">(</span>val_1<span style="color: #333333;">);</span>
NODE second <span style="color: #333333;">=</span> obj<span style="color: #333333;">.</span><span style="color: #0000cc;">createLinkedList</span><span style="color: #333333;">(</span>val_2<span style="color: #333333;">);</span>
<span style="color: #888888;">// Check no. of nodes in both Linked list</span>
<span style="color: #333399; font-weight: bold;">int</span> t1 <span style="color: #333333;">=</span> obj<span style="color: #333333;">.</span><span style="color: #0000cc;">noOfNodes</span><span style="color: #333333;">(</span>first<span style="color: #333333;">);</span>
<span style="color: #333399; font-weight: bold;">int</span> t2 <span style="color: #333333;">=</span> obj<span style="color: #333333;">.</span><span style="color: #0000cc;">noOfNodes</span><span style="color: #333333;">(</span>second<span style="color: #333333;">);</span>
<span style="color: #888888;">// Adjusting Linked List with leading zero node's to make it equal size</span>
<span style="color: #008800; font-weight: bold;">if</span><span style="color: #333333;">(</span>t1 <span style="color: #333333;"><</span> t2<span style="color: #333333;">)</span> first <span style="color: #333333;">=</span> obj<span style="color: #333333;">.</span><span style="color: #0000cc;">adjustLinkedList</span><span style="color: #333333;">(</span>first<span style="color: #333333;">,</span> <span style="color: #333333;">(</span>t2<span style="color: #333333;">-</span>t1<span style="color: #333333;">));</span>
<span style="color: #008800; font-weight: bold;">else</span> <span style="color: #0066bb; font-weight: bold;">if</span><span style="color: #333333;">(</span>t2 <span style="color: #333333;"><</span> t1<span style="color: #333333;">)</span> second <span style="color: #333333;">=</span> obj<span style="color: #333333;">.</span><span style="color: #0000cc;">adjustLinkedList</span><span style="color: #333333;">(</span>second<span style="color: #333333;">,</span> <span style="color: #333333;">(</span>t1<span style="color: #333333;">-</span>t2<span style="color: #333333;">));</span>
<span style="color: #888888;">// add method call</span>
NODE third <span style="color: #333333;">=</span> obj<span style="color: #333333;">.</span><span style="color: #0000cc;">addTwoLL</span><span style="color: #333333;">(</span>first<span style="color: #333333;">,</span> second<span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">);</span>
obj<span style="color: #333333;">.</span><span style="color: #0000cc;">print</span><span style="color: #333333;">(</span>third<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #888888;">// Method to get sum of 2 Linked List</span>
<span style="color: #008800; font-weight: bold;">private</span> NODE <span style="color: #0066bb; font-weight: bold;">addTwoLL</span><span style="color: #333333;">(</span>NODE first<span style="color: #333333;">,</span> NODE second<span style="color: #333333;">,</span> <span style="color: #333399; font-weight: bold;">int</span> cnt<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">if</span><span style="color: #333333;">(</span>first <span style="color: #333333;">!=</span> <span style="color: #008800; font-weight: bold;">null</span> <span style="color: #333333;">&&</span> second <span style="color: #333333;">!=</span> <span style="color: #008800; font-weight: bold;">null</span><span style="color: #333333;">){</span>
<span style="color: #888888;">// Recursive call moving to last node </span>
NODE node <span style="color: #333333;">=</span> addTwoLL<span style="color: #333333;">(</span>first<span style="color: #333333;">.</span><span style="color: #0000cc;">next</span><span style="color: #333333;">,</span> second<span style="color: #333333;">.</span><span style="color: #0000cc;">next</span><span style="color: #333333;">,</span> cnt<span style="color: #333333;">+</span><span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">);</span>
<span style="color: #888888;">// Calculating sum from last 2 values </span>
<span style="color: #333399; font-weight: bold;">int</span> val <span style="color: #333333;">=</span> <span style="color: #333333;">(</span>first<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span> <span style="color: #333333;">+</span> second<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span><span style="color: #333333;">)</span> <span style="color: #333333;">+</span>node<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span><span style="color: #333333;">;</span>
<span style="color: #333399; font-weight: bold;">int</span> carry <span style="color: #333333;">=</span> val<span style="color: #333333;">/</span><span style="color: #0000dd; font-weight: bold;">10</span><span style="color: #333333;">;</span>
<span style="color: #333399; font-weight: bold;">int</span> sum <span style="color: #333333;">=</span> val<span style="color: #333333;">%</span><span style="color: #0000dd; font-weight: bold;">10</span><span style="color: #333333;">;</span>
<span style="color: #888888;">// If carry present or not the first node in list then create a node with carry value</span>
<span style="color: #008800; font-weight: bold;">if</span><span style="color: #333333;">(</span>cnt <span style="color: #333333;">!=</span> <span style="color: #0000dd; font-weight: bold;">0</span> <span style="color: #333333;">||</span> carry <span style="color: #333333;">></span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
NODE carryNode <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">new</span> NODE<span style="color: #333333;">(</span>carry<span style="color: #333333;">);</span>
node<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span> <span style="color: #333333;">=</span> sum<span style="color: #333333;">;</span>
carryNode<span style="color: #333333;">.</span><span style="color: #0000cc;">next</span> <span style="color: #333333;">=</span> node<span style="color: #333333;">;</span>
<span style="color: #008800; font-weight: bold;">return</span> carryNode<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span><span style="color: #008800; font-weight: bold;">else</span> <span style="color: #333333;">{</span>
<span style="color: #888888;">// Assign final sum to the previous cycle carry node</span>
node<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span> <span style="color: #333333;">=</span> sum<span style="color: #333333;">;</span>
<span style="color: #008800; font-weight: bold;">return</span> node<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #888888;">// Create last carry node with zero</span>
<span style="color: #008800; font-weight: bold;">return</span> <span style="color: #008800; font-weight: bold;">new</span> <span style="color: #0066bb; font-weight: bold;">NODE</span><span style="color: #333333;">(</span><span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #008800; font-weight: bold;">private</span> NODE <span style="color: #0066bb; font-weight: bold;">adjustLinkedList</span><span style="color: #333333;">(</span>NODE ll<span style="color: #333333;">,</span> <span style="color: #333399; font-weight: bold;">int</span> noOfNodesToAdd<span style="color: #333333;">){</span>
<span style="color: #008800; font-weight: bold;">while</span><span style="color: #333333;">(</span>noOfNodesToAdd <span style="color: #333333;">></span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">){</span>
NODE tmp <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">new</span> NODE<span style="color: #333333;">(</span><span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">);</span>
tmp<span style="color: #333333;">.</span><span style="color: #0000cc;">next</span> <span style="color: #333333;">=</span> ll<span style="color: #333333;">;</span>
ll <span style="color: #333333;">=</span> tmp<span style="color: #333333;">;</span>
noOfNodesToAdd<span style="color: #333333;">--;</span>
<span style="color: #333333;">}</span>
<span style="color: #008800; font-weight: bold;">return</span> ll<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #008800; font-weight: bold;">private</span> <span style="color: #333399; font-weight: bold;">int</span> <span style="color: #0066bb; font-weight: bold;">noOfNodes</span><span style="color: #333333;">(</span>NODE ll<span style="color: #333333;">){</span>
<span style="color: #333399; font-weight: bold;">int</span> count <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">;</span>
<span style="color: #008800; font-weight: bold;">while</span><span style="color: #333333;">(</span>ll <span style="color: #333333;">!=</span> <span style="color: #008800; font-weight: bold;">null</span><span style="color: #333333;">){</span>
count <span style="color: #333333;">++;</span>
ll <span style="color: #333333;">=</span> ll<span style="color: #333333;">.</span><span style="color: #0000cc;">next</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #008800; font-weight: bold;">return</span> count<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #008800; font-weight: bold;">public</span> NODE <span style="color: #0066bb; font-weight: bold;">createLinkedList</span><span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span> val<span style="color: #333333;">[])</span> <span style="color: #333333;">{</span>
NODE start <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">null</span><span style="color: #333333;">;</span>
<span style="color: #008800; font-weight: bold;">for</span> <span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span> i <span style="color: #333333;">:</span> val<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
NODE tmp <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">new</span> NODE<span style="color: #333333;">(</span>i<span style="color: #333333;">);</span>
<span style="color: #008800; font-weight: bold;">if</span> <span style="color: #333333;">(</span>start <span style="color: #333333;">==</span> <span style="color: #008800; font-weight: bold;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
start <span style="color: #333333;">=</span> tmp<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span> <span style="color: #008800; font-weight: bold;">else</span> <span style="color: #333333;">{</span>
NODE mover <span style="color: #333333;">=</span> start<span style="color: #333333;">;</span>
<span style="color: #008800; font-weight: bold;">while</span> <span style="color: #333333;">(</span>mover<span style="color: #333333;">.</span><span style="color: #0000cc;">next</span> <span style="color: #333333;">!=</span> <span style="color: #008800; font-weight: bold;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
mover <span style="color: #333333;">=</span> mover<span style="color: #333333;">.</span><span style="color: #0000cc;">next</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
mover<span style="color: #333333;">.</span><span style="color: #0000cc;">next</span> <span style="color: #333333;">=</span> tmp<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #008800; font-weight: bold;">return</span> start<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #008800; font-weight: bold;">public</span> <span style="color: #333399; font-weight: bold;">void</span> <span style="color: #0066bb; font-weight: bold;">print</span><span style="color: #333333;">(</span>NODE tmp<span style="color: #333333;">){</span>
<span style="color: #008800; font-weight: bold;">while</span><span style="color: #333333;">(</span>tmp <span style="color: #333333;">!=</span> <span style="color: #008800; font-weight: bold;">null</span> <span style="color: #333333;">){</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">print</span><span style="color: #333333;">(</span>tmp<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span> <span style="color: #333333;">+</span><span style="background-color: #fff0f0;">", "</span><span style="color: #333333;">);</span>
tmp <span style="color: #333333;">=</span> tmp<span style="color: #333333;">.</span><span style="color: #0000cc;">next</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
</pre>
</div>
<br />
<br />
<br />
<b>OUTPUT:</b><br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #0000dd; font-weight: bold;">9</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">7</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">8</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">,</span>
</pre>
</div>
<br />
<br />
<br />
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
</style>
</div>
Java Discoverhttp://www.blogger.com/profile/18049511268651382259noreply@blogger.comtag:blogger.com,1999:blog-6801225484322010450.post-35489451473909371762019-01-17T11:24:00.000+05:302019-01-17T11:29:37.169+05:30Reverse words in a given String using recursion<div dir="ltr" style="text-align: left;" trbidi="on">
Reverse words in a given String using recursion. We need to reverse words by words in a given line and not the character in a given string. We need to solve this by using backtracking and recursion logic.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhUMAiERUan6bk2fow4UblCjWYolSKLpXukB27hvXgMNWeu_fCiHUydPMM1md2k-Sz5i_oMnP6qXm2mvporYpUdve5GlXcTvXgUqZy1gPQcaPCElIo9hvYXmMCf63wrClxa6zjBvv3F3o/s1600/Screenshot+2019-01-17+at+11.28.15+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Reverse words in a given String using recursion" border="0" data-original-height="198" data-original-width="290" height="136" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhUMAiERUan6bk2fow4UblCjWYolSKLpXukB27hvXgMNWeu_fCiHUydPMM1md2k-Sz5i_oMnP6qXm2mvporYpUdve5GlXcTvXgUqZy1gPQcaPCElIo9hvYXmMCf63wrClxa6zjBvv3F3o/s200/Screenshot+2019-01-17+at+11.28.15+AM.png" title="Reverse words in a given String using recursion" width="200" /></a></div>
<br />
Let's see simple Java code for getting the given of words in a reverse order by using recursion.<br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #008800; font-weight: bold;">public</span> <span style="color: #008800; font-weight: bold;">class</span> <span style="color: #bb0066; font-weight: bold;">ReverseLineByWords</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">public</span> <span style="color: #008800; font-weight: bold;">static</span> <span style="color: #333399; font-weight: bold;">void</span> <span style="color: #0066bb; font-weight: bold;">main</span><span style="color: #333333;">(</span>String<span style="color: #333333;">[]</span> args<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
String str <span style="color: #333333;">=</span> <span style="background-color: #fff0f0;">"Hello Java Discover"</span><span style="color: #333333;">;</span>
String finalStr <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">new</span> ReverseLineByWords<span style="color: #333333;">().</span><span style="color: #0000cc;">reverseLine</span><span style="color: #333333;">(</span>str<span style="color: #333333;">);</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span>finalStr<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #008800; font-weight: bold;">public</span> String <span style="color: #0066bb; font-weight: bold;">reverseLine</span><span style="color: #333333;">(</span>String str<span style="color: #333333;">){</span>
String word <span style="color: #333333;">=</span> <span style="background-color: #fff0f0;">""</span><span style="color: #333333;">;</span>
<span style="color: #333399; font-weight: bold;">int</span> i <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">;</span>
<span style="color: #008800; font-weight: bold;">for</span><span style="color: #333333;">(;</span>i<span style="color: #333333;"><</span>str<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">();</span>i<span style="color: #333333;">++){</span>
<span style="color: #008800; font-weight: bold;">if</span><span style="color: #333333;">(</span>str<span style="color: #333333;">.</span><span style="color: #0000cc;">charAt</span><span style="color: #333333;">(</span>i<span style="color: #333333;">)</span> <span style="color: #333333;">==</span> <span style="color: #0044dd;">' '</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
word <span style="color: #333333;">=</span> word <span style="color: #333333;">+</span> <span style="background-color: #fff0f0;">" "</span><span style="color: #333333;">;</span>
<span style="color: #008800; font-weight: bold;">break</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span><span style="color: #008800; font-weight: bold;">else</span><span style="color: #333333;">{</span>
word <span style="color: #333333;">=</span> word <span style="color: #333333;">+</span> str<span style="color: #333333;">.</span><span style="color: #0000cc;">charAt</span><span style="color: #333333;">(</span>i<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #008800; font-weight: bold;">if</span><span style="color: #333333;">(</span>i <span style="color: #333333;"><</span> str<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">())</span>
<span style="color: #008800; font-weight: bold;">return</span> <span style="color: #0066bb; font-weight: bold;">reverseLine</span><span style="color: #333333;">(</span>str<span style="color: #333333;">.</span><span style="color: #0000cc;">substring</span><span style="color: #333333;">(</span>i<span style="color: #333333;">+</span><span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">))</span> <span style="color: #333333;">+</span> word<span style="color: #333333;">;</span>
<span style="color: #008800; font-weight: bold;">return</span> <span style="color: #333333;">(</span>word <span style="color: #333333;">+</span> <span style="background-color: #fff0f0;">" "</span><span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
</pre>
</div>
<br />
<br />
<b>OUTPUT:</b><br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;">Discover Java Hello
</pre>
</div>
<br />
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #2a00ff}
</style><br />
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
</style></div>
Java Discoverhttp://www.blogger.com/profile/18049511268651382259noreply@blogger.comtag:blogger.com,1999:blog-6801225484322010450.post-31248776671028766132019-01-08T06:18:00.001+05:302019-01-08T06:48:21.130+05:30Rotate matrix by clockwise<div dir="ltr" style="text-align: left;" trbidi="on">
Given a NxN matrix and need to rotate by clockwise as given below<br />
<br />
Examples:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1gn6EXRip2oFMgl6aw_DivSMI6MyxzLx3kTL0fkvUmU6aY1n7EopK8h0pOxMSIjL8m6xSU9wG2NeSTBJi8fZKZT3rwn1vaJfwEeZ4CuY1OGFugBUxed9E0B-m-r4VmDIP0MSiWMqSGkk/s1600/Screenshot+2019-01-08+at+6.14.14+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Rotate matrix by clockwise" border="0" data-original-height="570" data-original-width="562" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1gn6EXRip2oFMgl6aw_DivSMI6MyxzLx3kTL0fkvUmU6aY1n7EopK8h0pOxMSIjL8m6xSU9wG2NeSTBJi8fZKZT3rwn1vaJfwEeZ4CuY1OGFugBUxed9E0B-m-r4VmDIP0MSiWMqSGkk/s320/Screenshot+2019-01-08+at+6.14.14+AM.png" title="Rotate matrix by clockwise" width="312" /></a></div>
<div class="p2">
<span class="Apple-converted-space"><br /></span></div>
<div class="p2">
<br /></div>
Let's see simple java code to rotate given NxN matrix.<br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #008800; font-weight: bold;">public</span> <span style="color: #008800; font-weight: bold;">class</span> <span style="color: #bb0066; font-weight: bold;">MatrixRotate</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">private</span> <span style="color: #333399; font-weight: bold;">int</span> prev<span style="color: #333333;">,</span> curr<span style="color: #333333;">;</span>
<span style="color: #008800; font-weight: bold;">public</span> <span style="color: #008800; font-weight: bold;">static</span> <span style="color: #333399; font-weight: bold;">void</span> <span style="color: #0066bb; font-weight: bold;">main</span><span style="color: #333333;">(</span>String<span style="color: #333333;">[]</span> args<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #333399; font-weight: bold;">int</span><span style="color: #333333;">[][]</span> matrix <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">new</span> <span style="color: #333399; font-weight: bold;">int</span><span style="color: #333333;">[][]</span> <span style="color: #333333;">{</span> <span style="color: #333333;">{</span> <span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">2</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">3</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">4</span> <span style="color: #333333;">},</span>
<span style="color: #333333;">{</span> <span style="color: #0000dd; font-weight: bold;">5</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">6</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">7</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">8</span> <span style="color: #333333;">},</span>
<span style="color: #333333;">{</span> <span style="color: #0000dd; font-weight: bold;">9</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">10</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">11</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">12</span> <span style="color: #333333;">},</span>
<span style="color: #333333;">{</span> <span style="color: #0000dd; font-weight: bold;">13</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">14</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">15</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">16</span> <span style="color: #333333;">}</span> <span style="color: #333333;">};</span>
MatrixRotate obj <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">new</span> MatrixRotate<span style="color: #333333;">();</span>
obj<span style="color: #333333;">.</span><span style="color: #0000cc;">rotateMatrix</span><span style="color: #333333;">(</span>matrix<span style="color: #333333;">);</span>
<span style="color: #008800; font-weight: bold;">for</span> <span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span> i <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">;</span> i <span style="color: #333333;"><</span> matrix<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">;</span> i<span style="color: #333333;">++)</span> <span style="color: #333333;">{</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">();</span>
<span style="color: #008800; font-weight: bold;">for</span> <span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span> j <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">;</span> j <span style="color: #333333;"><</span> matrix<span style="color: #333333;">[</span><span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">].</span><span style="color: #0000cc;">length</span><span style="color: #333333;">;</span> j<span style="color: #333333;">++)</span> <span style="color: #333333;">{</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">print</span><span style="color: #333333;">(</span>matrix<span style="color: #333333;">[</span>i<span style="color: #333333;">][</span>j<span style="color: #333333;">]</span> <span style="color: #333333;">+</span> <span style="background-color: #fff0f0;">", "</span><span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #008800; font-weight: bold;">public</span> <span style="color: #333399; font-weight: bold;">void</span> <span style="color: #0066bb; font-weight: bold;">rotateMatrix</span><span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span><span style="color: #333333;">[][]</span> matrix<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #333399; font-weight: bold;">int</span> r <span style="color: #333333;">=</span> matrix<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">;</span>
<span style="color: #333399; font-weight: bold;">int</span> c <span style="color: #333333;">=</span> matrix<span style="color: #333333;">[</span><span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">].</span><span style="color: #0000cc;">length</span><span style="color: #333333;">;</span>
<span style="color: #333399; font-weight: bold;">int</span> row <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">,</span> col <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">;</span>
<span style="color: #008800; font-weight: bold;">for</span> <span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span> cnt <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">;</span>cnt<span style="color: #333333;"><(</span>r<span style="color: #333333;">*</span>c<span style="color: #333333;">);</span>cnt<span style="color: #333333;">++)</span> <span style="color: #333333;">{</span>
prev <span style="color: #333333;">=</span> matrix<span style="color: #333333;">[</span>row <span style="color: #333333;">+</span> <span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">][</span>col<span style="color: #333333;">];</span>
<span style="color: #008800; font-weight: bold;">for</span> <span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span> i <span style="color: #333333;">=</span> col<span style="color: #333333;">;</span> i <span style="color: #333333;"><</span> c<span style="color: #333333;">;</span> i<span style="color: #333333;">++)</span> <span style="color: #333333;">{</span>
swap<span style="color: #333333;">(</span>row<span style="color: #333333;">,</span> i<span style="color: #333333;">,</span> matrix<span style="color: #333333;">); cnt++;</span><span style="color: #333333;"> </span><span style="color: #333333;">}</span>
row<span style="color: #333333;">++;</span>
<span style="color: #008800; font-weight: bold;">for</span> <span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span> i <span style="color: #333333;">=</span> row<span style="color: #333333;">;</span> i <span style="color: #333333;"><</span> r<span style="color: #333333;">;</span> i<span style="color: #333333;">++)</span> <span style="color: #333333;">{</span>
swap<span style="color: #333333;">(</span>i<span style="color: #333333;">,</span> c <span style="color: #333333;">-</span> <span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">,</span> matrix<span style="color: #333333;">); cnt++;</span> <span style="color: #333333;">}</span>
c<span style="color: #333333;">--;</span>
<span style="color: #008800; font-weight: bold;">if</span> <span style="color: #333333;">(</span>row <span style="color: #333333;"><</span> r<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">for</span> <span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span> i <span style="color: #333333;">=</span> c <span style="color: #333333;">-</span> <span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">;</span> i <span style="color: #333333;">>=</span> col<span style="color: #333333;">;</span> i<span style="color: #333333;">--)</span> <span style="color: #333333;">{</span>
swap<span style="color: #333333;">(</span>r <span style="color: #333333;">-</span> <span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">,</span> i<span style="color: #333333;">,</span> matrix<span style="color: #333333;">); cnt++;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
r<span style="color: #333333;">--;</span>
<span style="color: #008800; font-weight: bold;">if</span> <span style="color: #333333;">(</span>col <span style="color: #333333;"><</span> c<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">for</span> <span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span> i <span style="color: #333333;">=</span> r <span style="color: #333333;">-</span> <span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">;</span> i <span style="color: #333333;">>=</span> row<span style="color: #333333;">;</span> i<span style="color: #333333;">--)</span> <span style="color: #333333;">{</span>
swap<span style="color: #333333;">(</span>i<span style="color: #333333;">,</span> col<span style="color: #333333;">,</span> matrix<span style="color: #333333;">); cnt++;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
col<span style="color: #333333;">++;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #008800; font-weight: bold;">public</span> <span style="color: #333399; font-weight: bold;">void</span> <span style="color: #0066bb; font-weight: bold;">swap</span><span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span> i<span style="color: #333333;">,</span> <span style="color: #333399; font-weight: bold;">int</span> j<span style="color: #333333;">,</span> <span style="color: #333399; font-weight: bold;">int</span> matrix<span style="color: #333333;">[][])</span> <span style="color: #333333;">{</span>
curr <span style="color: #333333;">=</span> matrix<span style="color: #333333;">[</span>i<span style="color: #333333;">][</span>j<span style="color: #333333;">];</span>
matrix<span style="color: #333333;">[</span>i<span style="color: #333333;">][</span>j<span style="color: #333333;">]</span> <span style="color: #333333;">=</span> prev<span style="color: #333333;">;</span>
prev <span style="color: #333333;">=</span> curr<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
</pre>
</div>
<br />
<br />
<b>OUTPUT:</b><br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #0000dd; font-weight: bold;"> 5</span><span style="color: #333333;">, </span> <span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">2</span><span style="color: #333333;">, </span> <span style="color: #0000dd; font-weight: bold;">3</span><span style="color: #333333;">,</span>
<span style="color: #0000dd; font-weight: bold;"> 9</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">10</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">6</span><span style="color: #333333;">, </span> <span style="color: #0000dd; font-weight: bold;">4</span><span style="color: #333333;">,</span>
<span style="color: #0000dd; font-weight: bold;">13</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">11</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">7</span><span style="color: #333333;">, </span> <span style="color: #0000dd; font-weight: bold;">8</span><span style="color: #333333;">,</span>
<span style="color: #0000dd; font-weight: bold;">14</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">15</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">16</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">12</span><span style="color: #333333;">,</span>
</pre>
</div>
<br />
<br />
<br />
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
span.Apple-tab-span {white-space:pre}
</style><style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
</style><style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
span.Apple-tab-span {white-space:pre}
</style><style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
</style></div>
Java Discoverhttp://www.blogger.com/profile/18049511268651382259noreply@blogger.comtag:blogger.com,1999:blog-6801225484322010450.post-48830950464661405562019-01-04T02:32:00.001+05:302019-01-04T11:28:33.005+05:30Find the smallest window in a string containing all characters of another string (With smallest window)<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="background-color: white; border: 0px; color: rgba(0, 0, 0, 0.84); font-size: 16px; line-height: 1.71429; margin-bottom: 10px; padding: 0px; vertical-align: baseline;">
<span style="font-family: "times" , "times new roman" , serif;">Given two strings string1 and string2, find the smallest substring in string1 containing all characters of string2 efficiently.<br /><b>For Example:</b></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwoe0lQYBXM6tp_B-uodoq6XQbmPFY2nsgrHvWvDo1UgVa9XASJ4airgnQEJqgX16HiuMjQut3-gXbKPQZaT4pf9h3Ahnb8CEiqA9S1CztlNibnVj3syVtcgX71o2veQEeqXGYOZlCtV0/s1600/Screenshot+2019-01-04+at+2.27.44+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Find the smallest window in a string containing all characters of another string (With smallest window)" border="0" data-original-height="429" data-original-width="896" height="190" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwoe0lQYBXM6tp_B-uodoq6XQbmPFY2nsgrHvWvDo1UgVa9XASJ4airgnQEJqgX16HiuMjQut3-gXbKPQZaT4pf9h3Ahnb8CEiqA9S1CztlNibnVj3syVtcgX71o2veQEeqXGYOZlCtV0/s400/Screenshot+2019-01-04+at+2.27.44+AM.png" title="Find the smallest window in a string containing all characters of another string (With smallest window)" width="400" /></a></div>
<span style="font-family: "times" , "times new roman" , serif;"><b>Steps:</b></span><br />
<ul style="text-align: left;">
<li>Generate all substrings which starts with any one character from the pattern string</li>
<li>Iterate all substrings which we generated and compare each character from the pattern string with the substring and check for all characters present or not</li>
<li>If all characters present in substring then trim extra characters and choose the smallest window string</li>
</ul>
<br />
<b>Java code:</b><br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #008800; font-weight: bold;">public</span> <span style="color: #008800; font-weight: bold;">class</span> <span style="color: #bb0066; font-weight: bold;">StringInSmallestWindow</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">public</span> <span style="color: #008800; font-weight: bold;">static</span> <span style="color: #333399; font-weight: bold;">void</span> <span style="color: #0066bb; font-weight: bold;">main</span><span style="color: #333333;">(</span>String<span style="color: #333333;">[]</span> args<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
String str <span style="color: #333333;">=</span> <span style="background-color: #fff0f0;">"niharika"</span><span style="color: #333333;">;</span>
String findStr <span style="color: #333333;">=</span> <span style="background-color: #fff0f0;">"ir"</span><span style="color: #333333;">;</span>
String result <span style="color: #333333;">=</span> null<span style="color: #333333;">;</span>
<span style="color: #008800; font-weight: bold;">if</span> <span style="color: #333333;">(</span>str<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">()</span> <span style="color: #333333;"><</span> findStr<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">())</span> <span style="color: #333333;">{</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"Pattern string is greater than source string"</span><span style="color: #333333;">);</span>
<span style="color: #008800; font-weight: bold;">return</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333399; font-weight: bold;">int</span> j <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">;</span>
String<span style="color: #333333;">[]</span> arr <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">new</span> String<span style="color: #333333;">[</span>str<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">()];</span>
<span style="color: #888888;">// Get all substring which starts with any one character from the</span>
<span style="color: #888888;">// pattern string</span>
<span style="color: #008800; font-weight: bold;">for</span> <span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span> i <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">;</span> i <span style="color: #333333;"><</span> str<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">();</span> i<span style="color: #333333;">++)</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">if</span> <span style="color: #333333;">(</span>findStr<span style="color: #333333;">.</span><span style="color: #0000cc;">contains</span><span style="color: #333333;">(</span>str<span style="color: #333333;">.</span><span style="color: #0000cc;">charAt</span><span style="color: #333333;">(</span>i<span style="color: #333333;">)</span> <span style="color: #333333;">+</span> <span style="background-color: #fff0f0;">""</span><span style="color: #333333;">)</span> <span style="color: #333333;">&&</span> str<span style="color: #333333;">.</span><span style="color: #0000cc;">substring</span><span style="color: #333333;">(</span>i<span style="color: #333333;">).</span><span style="color: #0000cc;">length</span><span style="color: #333333;">()</span> <span style="color: #333333;">>=</span> findStr<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">())</span> <span style="color: #333333;">{</span>
arr<span style="color: #333333;">[</span>j<span style="color: #333333;">++]</span> <span style="color: #333333;">=</span> str<span style="color: #333333;">.</span><span style="color: #0000cc;">substring</span><span style="color: #333333;">(</span>i<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #888888;">// Iterate all substrings which we generated</span>
<span style="color: #008800; font-weight: bold;">for</span> <span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span> pnt <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">;</span> pnt <span style="color: #333333;"><</span> j<span style="color: #333333;">;</span> pnt<span style="color: #333333;">++)</span> <span style="color: #333333;">{</span>
String string <span style="color: #333333;">=</span> arr<span style="color: #333333;">[</span>pnt<span style="color: #333333;">];</span>
<span style="color: #333399; font-weight: bold;">char</span><span style="color: #333333;">[]</span> tmp <span style="color: #333333;">=</span> findStr<span style="color: #333333;">.</span><span style="color: #0000cc;">toCharArray</span><span style="color: #333333;">();</span>
<span style="color: #333399; font-weight: bold;">int</span> cnt <span style="color: #333333;">=</span> tmp<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">;</span>
<span style="color: #333399; font-weight: bold;">int</span> lastIndex <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">;</span>
<span style="color: #888888;">// Compare each character from the pattern string with the substring</span>
<span style="color: #888888;">// and check for all characters present or not</span>
<span style="color: #008800; font-weight: bold;">for</span> <span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span> i <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">;</span> i <span style="color: #333333;"><</span> tmp<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">;</span> i<span style="color: #333333;">++)</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">if</span> <span style="color: #333333;">(</span>string<span style="color: #333333;">.</span><span style="color: #0000cc;">contains</span><span style="color: #333333;">(</span>tmp<span style="color: #333333;">[</span>i<span style="color: #333333;">]</span> <span style="color: #333333;">+</span> <span style="background-color: #fff0f0;">""</span><span style="color: #333333;">))</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">if</span> <span style="color: #333333;">(</span>lastIndex <span style="color: #333333;"><</span> string<span style="color: #333333;">.</span><span style="color: #0000cc;">indexOf</span><span style="color: #333333;">(</span>tmp<span style="color: #333333;">[</span>i<span style="color: #333333;">]))</span> <span style="color: #333333;">{</span>
lastIndex <span style="color: #333333;">=</span> string<span style="color: #333333;">.</span><span style="color: #0000cc;">indexOf</span><span style="color: #333333;">(</span>tmp<span style="color: #333333;">[</span>i<span style="color: #333333;">]);</span>
<span style="color: #333333;">}</span>
string <span style="color: #333333;">=</span> string<span style="color: #333333;">.</span><span style="color: #0000cc;">substring</span><span style="color: #333333;">(</span><span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">,</span> string<span style="color: #333333;">.</span><span style="color: #0000cc;">indexOf</span><span style="color: #333333;">(</span>tmp<span style="color: #333333;">[</span>i<span style="color: #333333;">]))</span> <span style="color: #333333;">+</span> <span style="color: #0044dd;">'\0'</span>
<span style="color: #333333;">+</span> string<span style="color: #333333;">.</span><span style="color: #0000cc;">substring</span><span style="color: #333333;">(</span>string<span style="color: #333333;">.</span><span style="color: #0000cc;">indexOf</span><span style="color: #333333;">(</span>tmp<span style="color: #333333;">[</span>i<span style="color: #333333;">])</span> <span style="color: #333333;">+</span> <span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">);</span>
tmp<span style="color: #333333;">[</span>i<span style="color: #333333;">]</span> <span style="color: #333333;">=</span> <span style="color: #0044dd;">'\0'</span><span style="color: #333333;">;</span>
cnt<span style="color: #333333;">--;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #888888;">// If all characters present in substring then trim extra characters</span>
<span style="color: #888888;">// and choose the smallest window string</span>
<span style="color: #008800; font-weight: bold;">if</span> <span style="color: #333333;">(</span>cnt <span style="color: #333333;"><=</span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
arr<span style="color: #333333;">[</span>pnt<span style="color: #333333;">]</span> <span style="color: #333333;">=</span> arr<span style="color: #333333;">[</span>pnt<span style="color: #333333;">].</span><span style="color: #0000cc;">substring</span><span style="color: #333333;">(</span><span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">,</span> lastIndex <span style="color: #333333;">+</span> <span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">);</span>
result <span style="color: #333333;">=</span> arr<span style="color: #333333;">[</span>pnt<span style="color: #333333;">].</span><span style="color: #0000cc;">length</span><span style="color: #333333;">()</span> <span style="color: #333333;"><</span> result<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">()</span> <span style="color: #333333;">?</span> arr<span style="color: #333333;">[</span>pnt<span style="color: #333333;">]</span> <span style="color: #333333;">:</span> result<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"\nInput String : "</span> <span style="color: #333333;">+</span> str<span style="color: #333333;">);</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"\n2nd String to find : "</span> <span style="color: #333333;">+</span> findStr<span style="color: #333333;">);</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"\nSmallest window string : "</span> <span style="color: #333333;">+</span> result<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
</pre>
</div>
<br />
<br />
<b>OUTPUT:</b><br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;">Input String <span style="color: #333333;">:</span> niharika
<span style="color: #0000dd; font-weight: bold;">2</span>nd String to find <span style="color: #333333;">:</span> ir
Smallest window string <span style="color: #333333;">:</span> ri
</pre>
</div>
</div>
Java Discoverhttp://www.blogger.com/profile/18049511268651382259noreply@blogger.comtag:blogger.com,1999:blog-6801225484322010450.post-907875540686887282019-01-02T02:57:00.001+05:302019-01-02T02:57:04.832+05:30How to find missing number in a sequential array ?<div dir="ltr" style="text-align: left;" trbidi="on">
Given a list of sequential integers and need to finding a missing number from the list of numbers. For example if we have an array like<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgRlAyp3j0K00lRiK8R6Zs_cPDXqg7IVYXvW7NUdHDIc69xtXbXOf2SMi0xK3JSVpAo5omaxK1s1Ljlqa0nT3iYOKv1OOXwqEGAtzNAltbmsWHzeI2h0AuGoA2j113wcc8XmHrujkZkAo/s1600/Screenshot+2019-01-02+at+2.53.31+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Finding missing number" border="0" data-original-height="232" data-original-width="958" height="75" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgRlAyp3j0K00lRiK8R6Zs_cPDXqg7IVYXvW7NUdHDIc69xtXbXOf2SMi0xK3JSVpAo5omaxK1s1Ljlqa0nT3iYOKv1OOXwqEGAtzNAltbmsWHzeI2h0AuGoA2j113wcc8XmHrujkZkAo/s320/Screenshot+2019-01-02+at+2.53.31+AM.png" title="Finding missing number" width="320" /></a></div>
<br />
<br />
<b>Example:1</b><br />
<b>array</b> = {1,2,3,5,6}<br />
Finding missing number 4<br />
<br />
<b>Example:2</b><br />
array = {14,15,16,18,19,20}<br />
then the missing number is 17<br />
<br />
Using XOR operation and finding the missing number.<br />
<br />
<ul style="text-align: left;">
<li>Iterate all the elements and do XOR with each other. </li>
<li>Iterate all the numbers between given smallest and greatest number. In our above example between 1 to 6 and 14 to 20.</li>
<li>Next do XOR with both results which gives the missing number</li>
</ul>
<br />
Lets see simple Java code implementation<br />
<br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #008800; font-weight: bold;">public</span> <span style="color: #008800; font-weight: bold;">class</span> <span style="color: #bb0066; font-weight: bold;">FindingMissingNumber</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">public</span> <span style="color: #008800; font-weight: bold;">static</span> <span style="color: #333399; font-weight: bold;">void</span> <span style="color: #0066bb; font-weight: bold;">main</span><span style="color: #333333;">(</span>String<span style="color: #333333;">[]</span> args<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #333399; font-weight: bold;">int</span><span style="color: #333333;">[]</span> arr <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">new</span> <span style="color: #333399; font-weight: bold;">int</span><span style="color: #333333;">[]{</span><span style="color: #0000dd; font-weight: bold;">11</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">12</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">13</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">15</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">16</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">17</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">18</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">19</span><span style="color: #333333;">};</span>
<span style="color: #333399; font-weight: bold;">int</span> sr <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">11</span><span style="color: #333333;">;</span>
<span style="color: #333399; font-weight: bold;">int</span> er <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">19</span><span style="color: #333333;">;</span>
FindingMissingNumber obj <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">new</span> FindingMissingNumber<span style="color: #333333;">();</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"Missing number using XOR : "</span><span style="color: #333333;">+</span>obj<span style="color: #333333;">.</span><span style="color: #0000cc;">findMissingNumberUsingXOR</span><span style="color: #333333;">(</span>arr<span style="color: #333333;">,</span> sr<span style="color: #333333;">,</span> er<span style="color: #333333;">));</span>
<span style="color: #333333;">}</span>
<span style="color: #008800; font-weight: bold;">public</span> <span style="color: #333399; font-weight: bold;">int</span> <span style="color: #0066bb; font-weight: bold;">findMissingNumberUsingXOR</span><span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span><span style="color: #333333;">[]</span> arr<span style="color: #333333;">,</span> <span style="color: #333399; font-weight: bold;">int</span> sr<span style="color: #333333;">,</span> <span style="color: #333399; font-weight: bold;">int</span> er<span style="color: #333333;">){</span>
<span style="color: #333399; font-weight: bold;">int</span> xor <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">;</span>
<span style="color: #333399; font-weight: bold;">int</span> actualXor <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">;</span>
<span style="color: #008800; font-weight: bold;">for</span><span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span> i<span style="color: #333333;">=</span><span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">;</span>i<span style="color: #333333;"><</span>arr<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">;</span>i<span style="color: #333333;">++){</span>
xor <span style="color: #333333;">=</span> xor <span style="color: #333333;">^</span> arr<span style="color: #333333;">[</span>i<span style="color: #333333;">];;</span>
<span style="color: #333333;">}</span>
<span style="color: #008800; font-weight: bold;">for</span><span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span> i<span style="color: #333333;">=</span>sr<span style="color: #333333;">;</span>i<span style="color: #333333;"><=</span>er<span style="color: #333333;">;</span>i<span style="color: #333333;">++){</span>
actualXor <span style="color: #333333;">=</span> actualXor <span style="color: #333333;">^</span> i<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #008800; font-weight: bold;">return</span> <span style="color: #333333;">(</span>xor <span style="color: #333333;">^</span> actualXor<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
</pre>
</div>
<br />
<br />
<br />
OUTPUT:<br />
<br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;">Missing number using XOR <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">14</span>
</pre>
</div>
<br />
<br />
<br />
<br /></div>
Java Discoverhttp://www.blogger.com/profile/18049511268651382259noreply@blogger.comtag:blogger.com,1999:blog-6801225484322010450.post-60326690991760964332018-10-16T01:39:00.001+05:302018-10-17T15:26:22.310+05:30Split the array into two equal Sum subarrays<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<span style="background-color: white;"><span style="font-family: inherit;"><table><tbody>
<tr><td>Given an array of integers greater than zero, find it possible to split it in two subarrays such that the sum of the two subarrays is the same or with minimal difference. Print the two subarrays.
</td><td><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFYSc6DjGR5vmZ_fS05tcTIsZaEiBfJULROlq2fOmCGNghmVnUFLEmkcfXaL6Ku36fO2w9w6S1Ltg3zL93nkoV8aXAj6HFZqiTDCY3S_YhBuMr7WunJi89-e3cNlWgFgR6fR8xuyGKROI/s1600/Screen+Shot+2018-10-16+at+1.36.13+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Split the array into two equal Sum subarrays" border="0" data-original-height="430" data-original-width="694" height="195" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFYSc6DjGR5vmZ_fS05tcTIsZaEiBfJULROlq2fOmCGNghmVnUFLEmkcfXaL6Ku36fO2w9w6S1Ltg3zL93nkoV8aXAj6HFZqiTDCY3S_YhBuMr7WunJi89-e3cNlWgFgR6fR8xuyGKROI/s320/Screen+Shot+2018-10-16+at+1.36.13+AM.png" title="Split the array into two equal Sum subarrays" width="320" /></a></div>
</td></tr>
</tbody></table>
</span></span></div>
<div style="text-align: justify;">
<span style="background-color: white;"><span style="font-family: inherit;"><br /></span></span>
<span style="background-color: white;"><span style="font-family: inherit;"><br /></span></span></div>
<div style="text-align: justify;">
<span style="background-color: white;"><b><span style="font-family: inherit;">Examples:</span></b></span></div>
<div style="text-align: justify;">
<span style="background-color: white;"><span style="font-family: inherit;"><br /></span></span></div>
<div style="text-align: justify;">
<span style="background-color: white;"><span style="font-family: inherit;"><b>Input</b>: {5,7,9,2,69,23,9,1,8,5,7,3,6,16}</span></span></div>
<div style="text-align: justify;">
<span style="background-color: white;"><span style="font-family: inherit;"><br /></span></span></div>
<div style="text-align: justify;">
<span style="background-color: white;"><span style="font-family: inherit;"><b>Output</b>: </span></span></div>
<div style="text-align: justify;">
<span style="background-color: white;"><span style="font-family: inherit;">1st Array sum : 85</span></span></div>
<div style="text-align: justify;">
<span style="background-color: white;"><span style="font-family: inherit;">2nd Array sum : 85</span></span></div>
<div style="text-align: justify;">
<span style="background-color: white;"><span style="font-family: inherit;"><br /></span></span></div>
<div style="text-align: justify;">
<span style="background-color: white;"><span style="font-family: inherit;">ARRAY-1 : 69, 8, 7, 1, </span></span></div>
<div style="text-align: justify;">
<span style="background-color: white;"><span style="font-family: inherit;">ARRAY-2 : 23, 2, 16, 3, 9, 5, 9, 5, 6, 7, </span></span></div>
<div style="text-align: justify;">
<span style="background-color: white;"><span style="font-family: inherit;"><br /></span></span></div>
<div style="text-align: justify;">
<span style="background-color: white;"><span style="font-family: inherit;"><br /></span></span></div>
<div style="text-align: justify;">
<span style="background-color: white;"><span style="font-family: inherit;"><b>Input</b>: {1,2,3,4,5,6,7,8,9,10}</span></span></div>
<div style="text-align: justify;">
<span style="background-color: white;"><span style="font-family: inherit;"><br /></span></span></div>
<div style="text-align: justify;">
<span style="background-color: white;"><span style="font-family: inherit;"><b>Output</b>:</span></span></div>
<div style="text-align: justify;">
<span style="background-color: white;"><span style="font-family: inherit;">1st Array sum : 27</span></span></div>
<div style="text-align: justify;">
<span style="background-color: white;"><span style="font-family: inherit;">2nd Array sum : 28</span></span></div>
<div style="text-align: justify;">
<span style="background-color: white;"><span style="font-family: inherit;"><br /></span></span></div>
<div style="text-align: justify;">
<span style="background-color: white;"><span style="font-family: inherit;">ARRAY-1 : 10, 8, 2, 6, 1, </span></span></div>
<div style="text-align: justify;">
<span style="background-color: white;"><span style="font-family: inherit;">ARRAY-2 : 9, 3, 7, 4, 5, </span></span></div>
<div style="text-align: justify;">
<span style="background-color: white;"><span style="font-family: inherit;"><br /></span></span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Lets see simple solution how to split the given array with equal sum or minimal difference.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<b>Steps:</b></div>
<div style="text-align: justify;">
1. Sort the given array.</div>
<div style="text-align: justify;">
2. Iterate the array from both end and place the values in 2 different arraylist and also maintain the sum of both list.</div>
<div style="text-align: justify;">
3. On each iteration check for both sum difference and if they are not equal then swap difference value from 1st array to 2nd array or wise-verse to make it equal or minimal difference between both the array. </div>
<div style="text-align: justify;">
4. Finally print both the array sum and list of elements in both array.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Simple java code for the above solution:</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #008800; font-weight: bold;">import</span> <span style="color: #0e84b5; font-weight: bold;">java.util.ArrayList</span><span style="color: #333333;">;</span>
<span style="color: #008800; font-weight: bold;">import</span> <span style="color: #0e84b5; font-weight: bold;">java.util.List</span><span style="color: #333333;">;</span>
<span style="color: #008800; font-weight: bold;">public</span> <span style="color: #008800; font-weight: bold;">class</span> <span style="color: #bb0066; font-weight: bold;">ArrayPartition</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">public</span> <span style="color: #008800; font-weight: bold;">static</span> <span style="color: #333399; font-weight: bold;">void</span> <span style="color: #0066bb; font-weight: bold;">main</span><span style="color: #333333;">(</span>String<span style="color: #333333;">[]</span> args<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #333399; font-weight: bold;">int</span><span style="color: #333333;">[]</span> array <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">new</span> <span style="color: #333399; font-weight: bold;">int</span><span style="color: #333333;">[]</span> <span style="color: #333333;">{</span><span style="color: #0000dd; font-weight: bold;">5</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">7</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">9</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">2</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">69</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">23</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">9</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">8</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">5</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">7</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">3</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">6</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">16</span><span style="color: #333333;">};</span>
<span style="color: #888888;">//int[] array = new int[] {1,2,3,4,5,6,7,8,9,10,1,3,3,6};</span>
<span style="color: #888888;">//int[] array = new int[] {5,5,2,2,1,1,2};</span>
<span style="color: #888888;">//int[] array = new int[] {1,2,3,4,5,6,7,8,9,10};</span>
<span style="color: #888888;">//int[] array = new int[] {100,50,55,2,2,1};</span>
<span style="color: #888888;">//int[] array = new int[] {1 , 2 , 3 , 6, 12};</span>
<span style="color: #888888;">//int[] array = new int[] {1,2,3,4};</span>
<span style="color: #888888;">//int[] array = new int[] {1000, 5000, 3000, 1000};</span>
<span style="color: #888888;">//int[] array = new int[] {1,2,3,4,5,6,7};</span>
<span style="color: #888888;">//int[] array = new int[] {1,1,1,1,1,1,2,4,2,2,1,3};</span>
<span style="color: #888888;">//int[] array = new int[] {10,100,50,110};</span>
<span style="color: #888888;">//int[] array = new int[] {4, 1, 2, 3};</span>
<span style="color: #888888;">//int[] array = new int[] {500000, 1,332234,3565, 332234};</span>
<span style="color: #888888;">// Sort the given array</span>
sortArray<span style="color: #333333;">(</span>array<span style="color: #333333;">);</span>
<span style="color: #888888;">// Call partition method to split the array</span>
partition<span style="color: #333333;">(</span>array<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #008800; font-weight: bold;">public</span> <span style="color: #008800; font-weight: bold;">static</span> <span style="color: #333399; font-weight: bold;">void</span> <span style="color: #0066bb; font-weight: bold;">partition</span><span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span><span style="color: #333333;">[]</span> array<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
List<span style="color: #333333;"><</span>Integer<span style="color: #333333;">></span> arr1 <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">new</span> ArrayList<span style="color: #333333;"><</span>Integer<span style="color: #333333;">>();</span>
List<span style="color: #333333;"><</span>Integer<span style="color: #333333;">></span> arr2 <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">new</span> ArrayList<span style="color: #333333;"><</span>Integer<span style="color: #333333;">>();</span>
<span style="color: #333399; font-weight: bold;">int</span> sum1 <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">,</span> sum2 <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">;</span>
<span style="color: #888888;">// Place last value (largest) value in array1</span>
arr1<span style="color: #333333;">.</span><span style="color: #0000cc;">add</span><span style="color: #333333;">(</span>array<span style="color: #333333;">[</span>array<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">-</span><span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">]);</span>
sum1 <span style="color: #333333;">=</span> array<span style="color: #333333;">[</span>array<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">-</span><span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">];</span>
<span style="color: #888888;">// Iterate remaining values in array</span>
<span style="color: #008800; font-weight: bold;">for</span> <span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span> i<span style="color: #333333;">=</span><span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">,</span>j<span style="color: #333333;">=</span>array<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">-</span><span style="color: #0000dd; font-weight: bold;">2</span><span style="color: #333333;">;</span>i<span style="color: #333333;"><=</span>j<span style="color: #333333;">;)</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">if</span><span style="color: #333333;">(</span>sum2 <span style="color: #333333;"><=</span> sum1<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
arr2<span style="color: #333333;">.</span><span style="color: #0000cc;">add</span><span style="color: #333333;">(</span>array<span style="color: #333333;">[</span>i<span style="color: #333333;">]);</span>
sum2 <span style="color: #333333;">+=</span> array<span style="color: #333333;">[</span>i<span style="color: #333333;">];</span>
i<span style="color: #333333;">++;</span>
<span style="color: #333333;">}</span><span style="color: #008800; font-weight: bold;">else</span> <span style="color: #333333;">{</span>
arr1<span style="color: #333333;">.</span><span style="color: #0000cc;">add</span><span style="color: #333333;">(</span>array<span style="color: #333333;">[</span>i<span style="color: #333333;">]);</span>
sum1 <span style="color: #333333;">+=</span> array<span style="color: #333333;">[</span>i<span style="color: #333333;">];</span>
i<span style="color: #333333;">++;</span>
<span style="color: #333333;">}</span>
<span style="color: #008800; font-weight: bold;">if</span><span style="color: #333333;">(</span>i <span style="color: #333333;"><=</span> j<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">if</span><span style="color: #333333;">(</span>sum2 <span style="color: #333333;"><=</span> sum1<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
arr2<span style="color: #333333;">.</span><span style="color: #0000cc;">add</span><span style="color: #333333;">(</span>array<span style="color: #333333;">[</span>j<span style="color: #333333;">]);</span>
sum2 <span style="color: #333333;">+=</span> array<span style="color: #333333;">[</span>j<span style="color: #333333;">];</span>
j<span style="color: #333333;">--;</span>
<span style="color: #333333;">}</span><span style="color: #008800; font-weight: bold;">else</span> <span style="color: #333333;">{</span>
arr1<span style="color: #333333;">.</span><span style="color: #0000cc;">add</span><span style="color: #333333;">(</span>array<span style="color: #333333;">[</span>j<span style="color: #333333;">]);</span>
sum1 <span style="color: #333333;">+=</span> array<span style="color: #333333;">[</span>j<span style="color: #333333;">];</span>
j<span style="color: #333333;">--;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
}</pre>
<pre style="line-height: 125%; margin: 0;"> <span style="color: #888888;">// Reorder array1 and array2 with equal sum or minimal sum</span>
<span style="color: #008800; font-weight: bold;">if</span><span style="color: #333333;">(</span>sum1 <span style="color: #333333;">></span> sum2<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #333399; font-weight: bold;">int</span> diff <span style="color: #333333;">=</span> <span style="color: #333333;">(</span>sum1 <span style="color: #333333;">-</span> sum2<span style="color: #333333;">)/</span><span style="color: #0000dd; font-weight: bold;">2</span><span style="color: #333333;">;</span>
<span style="color: #008800; font-weight: bold;">if</span><span style="color: #333333;">(</span>arr1<span style="color: #333333;">.</span><span style="color: #0000cc;">contains</span><span style="color: #333333;">(</span>diff<span style="color: #333333;">)</span> <span style="color: #333333;">&&</span> diff <span style="color: #333333;">></span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #333399; font-weight: bold;">int</span> sum<span style="color: #333333;">[]</span> <span style="color: #333333;">=</span> replaceArrayElement<span style="color: #333333;">(</span>arr1<span style="color: #333333;">,</span> diff<span style="color: #333333;">,</span> arr2<span style="color: #333333;">,</span> sum1<span style="color: #333333;">,</span> sum2<span style="color: #333333;">);</span>
sum1 <span style="color: #333333;">=</span> sum<span style="color: #333333;">[</span><span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">];</span>
sum2 <span style="color: #333333;">=</span> sum<span style="color: #333333;">[</span><span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">];</span>
<span style="color: #333333;">}</span>
<span style="color: #008800; font-weight: bold;">while</span><span style="color: #333333;">(</span>sum1 <span style="color: #333333;">></span> sum2 <span style="color: #333333;">&&</span> diff <span style="color: #333333;">></span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
diff<span style="color: #333333;">--;</span>
<span style="color: #008800; font-weight: bold;">if</span><span style="color: #333333;">(</span>arr1<span style="color: #333333;">.</span><span style="color: #0000cc;">contains</span><span style="color: #333333;">(</span>diff<span style="color: #333333;">)</span> <span style="color: #333333;">&&</span> diff <span style="color: #333333;">></span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #333399; font-weight: bold;">int</span> sum<span style="color: #333333;">[]</span> <span style="color: #333333;">=</span> replaceArrayElement<span style="color: #333333;">(</span>arr1<span style="color: #333333;">,</span> diff<span style="color: #333333;">,</span> arr2<span style="color: #333333;">,</span> sum1<span style="color: #333333;">,</span> sum2<span style="color: #333333;">);</span>
sum1 <span style="color: #333333;">=</span> sum<span style="color: #333333;">[</span><span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">];</span>
sum2 <span style="color: #333333;">=</span> sum<span style="color: #333333;">[</span><span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">];</span>
diff<span style="color: #333333;">++;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #888888;">// Reorder array1 and array2 with equal sum or minimal sum</span>
<span style="color: #008800; font-weight: bold;">if</span><span style="color: #333333;">(</span>sum2 <span style="color: #333333;">></span> sum1<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #333399; font-weight: bold;">int</span> diff <span style="color: #333333;">=</span> <span style="color: #333333;">(</span>sum2 <span style="color: #333333;">-</span> sum1<span style="color: #333333;">)/</span><span style="color: #0000dd; font-weight: bold;">2</span><span style="color: #333333;">;</span>
<span style="color: #008800; font-weight: bold;">if</span><span style="color: #333333;">(</span>arr2<span style="color: #333333;">.</span><span style="color: #0000cc;">contains</span><span style="color: #333333;">(</span>diff<span style="color: #333333;">)</span> <span style="color: #333333;">&&</span> diff <span style="color: #333333;">></span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #333399; font-weight: bold;">int</span> sum<span style="color: #333333;">[]</span> <span style="color: #333333;">=</span> replaceArrayElement<span style="color: #333333;">(</span>arr2<span style="color: #333333;">,</span> diff<span style="color: #333333;">,</span> arr1<span style="color: #333333;">,</span> sum2<span style="color: #333333;">,</span> sum1<span style="color: #333333;">);</span>
sum2 <span style="color: #333333;">=</span> sum<span style="color: #333333;">[</span><span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">];</span>
sum1 <span style="color: #333333;">=</span> sum<span style="color: #333333;">[</span><span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">];</span>
<span style="color: #333333;">}</span>
<span style="color: #008800; font-weight: bold;">while</span><span style="color: #333333;">(</span>sum2 <span style="color: #333333;">></span> sum1 <span style="color: #333333;">&&</span> diff <span style="color: #333333;">></span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
diff<span style="color: #333333;">--;</span>
<span style="color: #008800; font-weight: bold;">if</span><span style="color: #333333;">(</span>arr2<span style="color: #333333;">.</span><span style="color: #0000cc;">contains</span><span style="color: #333333;">(</span>diff<span style="color: #333333;">)</span> <span style="color: #333333;">&&</span> diff <span style="color: #333333;">></span> <span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #333399; font-weight: bold;">int</span> sum<span style="color: #333333;">[]</span> <span style="color: #333333;">=</span> replaceArrayElement<span style="color: #333333;">(</span>arr2<span style="color: #333333;">,</span> diff<span style="color: #333333;">,</span> arr1<span style="color: #333333;">,</span> sum2<span style="color: #333333;">,</span> sum1<span style="color: #333333;">);</span>
sum2 <span style="color: #333333;">=</span> sum<span style="color: #333333;">[</span><span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">];</span>
sum1 <span style="color: #333333;">=</span> sum<span style="color: #333333;">[</span><span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">];</span>
diff<span style="color: #333333;">++;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"1st Array sum : "</span><span style="color: #333333;">+</span>sum1<span style="color: #333333;">);</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"2nd Array sum : "</span><span style="color: #333333;">+</span>sum2<span style="color: #333333;">);</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">print</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"\nARRAY-1 : "</span><span style="color: #333333;">);</span>
<span style="color: #008800; font-weight: bold;">for</span> <span style="color: #333333;">(</span>Integer integer <span style="color: #333333;">:</span> arr1<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">print</span><span style="color: #333333;">(</span>integer <span style="color: #333333;">+</span><span style="background-color: #fff0f0;">", "</span><span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">print</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"\nARRAY-2 : "</span><span style="color: #333333;">);</span>
<span style="color: #008800; font-weight: bold;">for</span> <span style="color: #333333;">(</span>Integer integer <span style="color: #333333;">:</span> arr2<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">print</span><span style="color: #333333;">(</span>integer <span style="color: #333333;">+</span><span style="background-color: #fff0f0;">", "</span><span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #008800; font-weight: bold;">private</span> <span style="color: #008800; font-weight: bold;">static</span> <span style="color: #333399; font-weight: bold;">int</span><span style="color: #333333;">[]</span> <span style="color: #0066bb; font-weight: bold;">replaceArrayElement</span><span style="color: #333333;">(</span>List<span style="color: #333333;"><</span>Integer<span style="color: #333333;">></span> arr1<span style="color: #333333;">,</span> <span style="color: #333399; font-weight: bold;">int</span> diff<span style="color: #333333;">,</span> List<span style="color: #333333;"><</span>Integer<span style="color: #333333;">></span> arr2<span style="color: #333333;">,</span> <span style="color: #333399; font-weight: bold;">int</span> sum1<span style="color: #333333;">,</span> <span style="color: #333399; font-weight: bold;">int</span> sum2<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #333399; font-weight: bold;">int</span> in <span style="color: #333333;">=</span> arr1<span style="color: #333333;">.</span><span style="color: #0000cc;">indexOf</span><span style="color: #333333;">(</span>diff<span style="color: #333333;">);</span>
arr1<span style="color: #333333;">.</span><span style="color: #0000cc;">remove</span><span style="color: #333333;">(</span>in<span style="color: #333333;">);</span>
sum1 <span style="color: #333333;">=</span> sum1 <span style="color: #333333;">-</span> diff<span style="color: #333333;">;</span>
arr2<span style="color: #333333;">.</span><span style="color: #0000cc;">add</span><span style="color: #333333;">(</span>diff<span style="color: #333333;">);</span>
sum2 <span style="color: #333333;">=</span> sum2 <span style="color: #333333;">+</span> diff<span style="color: #333333;">;</span>
<span style="color: #008800; font-weight: bold;">return</span> <span style="color: #008800; font-weight: bold;">new</span> <span style="color: #333399; font-weight: bold;">int</span><span style="color: #333333;">[]</span> <span style="color: #333333;">{</span>sum1<span style="color: #333333;">,</span> sum2<span style="color: #333333;">};</span>
<span style="color: #333333;">}</span>
<span style="color: #008800; font-weight: bold;">private</span> <span style="color: #008800; font-weight: bold;">static</span> <span style="color: #333399; font-weight: bold;">void</span> <span style="color: #0066bb; font-weight: bold;">sortArray</span><span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span><span style="color: #333333;">[]</span> array<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">for</span><span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span> i<span style="color: #333333;">=</span><span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">;</span>i<span style="color: #333333;"><=</span>array<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">-</span><span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">;</span>i<span style="color: #333333;">++)</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">for</span><span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span> j<span style="color: #333333;">=</span>i<span style="color: #333333;">+</span><span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">;</span>j<span style="color: #333333;"><=</span>array<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">-</span><span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">;</span>j<span style="color: #333333;">++)</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">if</span><span style="color: #333333;">(</span>array<span style="color: #333333;">[</span>i<span style="color: #333333;">]</span> <span style="color: #333333;">></span> array<span style="color: #333333;">[</span>j<span style="color: #333333;">])</span> <span style="color: #333333;">{</span>
<span style="color: #333399; font-weight: bold;">int</span> tmp <span style="color: #333333;">=</span> array<span style="color: #333333;">[</span>i<span style="color: #333333;">];</span>
array<span style="color: #333333;">[</span>i<span style="color: #333333;">]</span> <span style="color: #333333;">=</span> array<span style="color: #333333;">[</span>j<span style="color: #333333;">];</span>
array<span style="color: #333333;">[</span>j<span style="color: #333333;">]</span> <span style="color: #333333;">=</span> tmp<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
</pre>
</div>
</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
OUTPUT:</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #0000dd; font-weight: bold;">1</span>st Array sum <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">85</span>
<span style="color: #0000dd; font-weight: bold;">2</span>nd Array sum <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">85</span>
ARRAY<span style="color: #333333;">-</span><span style="color: #0000dd; font-weight: bold;">1</span> <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">69</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">8</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">7</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">,</span>
ARRAY<span style="color: #333333;">-</span><span style="color: #0000dd; font-weight: bold;">2</span> <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">23</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">2</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">16</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">3</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">9</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">5</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">9</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">5</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">6</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">7</span><span style="color: #333333;">,</span>
</pre>
</div>
</div>
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #4e9072}
</style><style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px}
</style><style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
</style><style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px}
</style></div>
Java Discoverhttp://www.blogger.com/profile/18049511268651382259noreply@blogger.comtag:blogger.com,1999:blog-6801225484322010450.post-44323213140014351412018-08-04T04:24:00.003+05:302018-08-04T04:24:49.029+05:30How to do simple matrix multiplication<div dir="ltr" style="text-align: left;" trbidi="on">
Simple matrix multiplication with sample java code.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5HC5EEl8eIftesFbDbW7-NlHmrNsgm9dKksZgjhgnu97Y3gIHYKm2_NC3W5BPwIpFshoCUvtz_sJ298MUOqflCQVnd8Mx0JrSGxayTaQ_de17Nq5Pfe297KvUIh4ctPjdd_B2M6vvWek/s1600/Screen+Shot+2018-08-04+at+4.23.17+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="How to do simple matrix multiplication" border="0" data-original-height="318" data-original-width="732" height="137" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5HC5EEl8eIftesFbDbW7-NlHmrNsgm9dKksZgjhgnu97Y3gIHYKm2_NC3W5BPwIpFshoCUvtz_sJ298MUOqflCQVnd8Mx0JrSGxayTaQ_de17Nq5Pfe297KvUIh4ctPjdd_B2M6vvWek/s320/Screen+Shot+2018-08-04+at+4.23.17+AM.png" title="How to do simple matrix multiplication" width="320" /></a></div>
<br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #008800; font-weight: bold;">public</span> <span style="color: #008800; font-weight: bold;">class</span> <span style="color: #bb0066; font-weight: bold;">MatrixMultiplication</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">public</span> <span style="color: #008800; font-weight: bold;">static</span> <span style="color: #333399; font-weight: bold;">void</span> <span style="color: #0066bb; font-weight: bold;">main</span><span style="color: #333333;">(</span>String<span style="color: #333333;">[]</span> args<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #333399; font-weight: bold;">int</span> a<span style="color: #333333;">[][]</span> <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">new</span> <span style="color: #333399; font-weight: bold;">int</span><span style="color: #333333;">[][]</span> <span style="color: #333333;">{</span> <span style="color: #333333;">{</span><span style="color: #0000dd; font-weight: bold;">2</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">3</span><span style="color: #333333;">},</span> <span style="color: #333333;">{</span><span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">2</span><span style="color: #333333;">},</span> <span style="color: #333333;">{</span><span style="color: #0000dd; font-weight: bold;">5</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">6</span><span style="color: #333333;">}</span> <span style="color: #333333;">};</span>
<span style="color: #333399; font-weight: bold;">int</span> b<span style="color: #333333;">[][]</span> <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">new</span> <span style="color: #333399; font-weight: bold;">int</span><span style="color: #333333;">[][]</span> <span style="color: #333333;">{</span> <span style="color: #333333;">{</span><span style="color: #0000dd; font-weight: bold;">4</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">5</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">6</span><span style="color: #333333;">},</span> <span style="color: #333333;">{</span><span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">2</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">3</span><span style="color: #333333;">}</span> <span style="color: #333333;">};</span>
<span style="color: #008800; font-weight: bold;">if</span><span style="color: #333333;">(</span>a<span style="color: #333333;">[</span><span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">].</span><span style="color: #0000cc;">length</span> <span style="color: #333333;">!=</span> b<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"Multiplication not possible"</span><span style="color: #333333;">);</span>
<span style="color: #008800; font-weight: bold;">return</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333399; font-weight: bold;">int</span> c<span style="color: #333333;">[][]</span> <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">new</span> <span style="color: #333399; font-weight: bold;">int</span><span style="color: #333333;">[</span>a<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">][</span>b<span style="color: #333333;">[</span><span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">].</span><span style="color: #0000cc;">length</span><span style="color: #333333;">];</span>
<span style="color: #008800; font-weight: bold;">for</span><span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span> i<span style="color: #333333;">=</span><span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">;</span>i<span style="color: #333333;"><</span>a<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">;</span>i<span style="color: #333333;">++)</span>
<span style="color: #008800; font-weight: bold;">for</span><span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span> j<span style="color: #333333;">=</span><span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">;</span>j<span style="color: #333333;"><</span>b<span style="color: #333333;">[</span><span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">].</span><span style="color: #0000cc;">length</span><span style="color: #333333;">;</span>j<span style="color: #333333;">++)</span>
<span style="color: #008800; font-weight: bold;">for</span><span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span> k<span style="color: #333333;">=</span><span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">;</span>k<span style="color: #333333;"><</span>a<span style="color: #333333;">[</span><span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">].</span><span style="color: #0000cc;">length</span><span style="color: #333333;">;</span>k<span style="color: #333333;">++)</span>
c<span style="color: #333333;">[</span>i<span style="color: #333333;">][</span>j<span style="color: #333333;">]</span> <span style="color: #333333;">+=</span> a<span style="color: #333333;">[</span>i<span style="color: #333333;">][</span>k<span style="color: #333333;">]</span> <span style="color: #333333;">*</span> b<span style="color: #333333;">[</span>k<span style="color: #333333;">][</span>j<span style="color: #333333;">];</span>
<span style="color: #008800; font-weight: bold;">for</span><span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span> i<span style="color: #333333;">=</span><span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">;</span>i<span style="color: #333333;"><</span>a<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">;</span>i<span style="color: #333333;">++)</span> <span style="color: #333333;">{</span>
<span style="color: #008800; font-weight: bold;">for</span><span style="color: #333333;">(</span><span style="color: #333399; font-weight: bold;">int</span> j<span style="color: #333333;">=</span><span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">;</span>j<span style="color: #333333;"><</span>b<span style="color: #333333;">[</span><span style="color: #0000dd; font-weight: bold;">0</span><span style="color: #333333;">].</span><span style="color: #0000cc;">length</span><span style="color: #333333;">;</span>j<span style="color: #333333;">++)</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">print</span><span style="color: #333333;">(</span>c<span style="color: #333333;">[</span>i<span style="color: #333333;">][</span>j<span style="color: #333333;">]</span> <span style="color: #333333;">+</span> <span style="background-color: #fff0f0;">" "</span><span style="color: #333333;">);</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">();</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
</pre>
</div>
<br />
<br />
<b>OUTPUT</b>:<br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #0000dd; font-weight: bold;">11</span> <span style="color: #0000dd; font-weight: bold;">16</span> <span style="color: #0000dd; font-weight: bold;">21</span>
<span style="color: #0000dd; font-weight: bold;">6</span> <span style="color: #0000dd; font-weight: bold;">9</span> <span style="color: #0000dd; font-weight: bold;">12</span>
<span style="color: #0000dd; font-weight: bold;">26</span> <span style="color: #0000dd; font-weight: bold;">37</span> <span style="color: #0000dd; font-weight: bold;">48</span>
</pre>
</div>
</div>
Java Discoverhttp://www.blogger.com/profile/18049511268651382259noreply@blogger.comtag:blogger.com,1999:blog-6801225484322010450.post-86177768821400046672018-08-02T07:12:00.000+05:302018-08-02T07:12:19.914+05:30How to find the largest subarray with sum 0<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="background-color: white; border: 0px; font-family: "Open Sans", Helvetica, Arial, Verdana, sans-serif; font-size: 15px !important; line-height: 1.71429; margin-bottom: 10px; padding: 0px; text-align: justify; vertical-align: baseline;">
Given an array of integers, find the largest subarray with sum equals to 0. If theres no subarray with sum 0 then print as "<span style="background-color: transparent; color: #3933ff; font-family: "monaco"; font-size: 11px; text-align: left;">No subarray with sum 0</span>".</div>
<div style="background-color: white; border: 0px; font-family: "Open Sans", Helvetica, Arial, Verdana, sans-serif; font-size: 15px !important; line-height: 1.71429; margin-bottom: 10px; padding: 0px; text-align: justify; vertical-align: baseline;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoXOTmOb4rDb-4Wz9MSvpW4k_2oq4sZnzGS-YaazzJWfuzWnviw7IwaTTdrSOEeZPncLoVmGgcfkTCRsfg7nXGePlD8f7qZzhAJTsgz377C-cqh3_aileNc5Xbi-wQpHwyMh21WyKVkkU/s1600/Screen+Shot+2018-08-02+at+7.09.28+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="How to find the largest subarray with sum 0" border="0" data-original-height="252" data-original-width="758" height="132" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoXOTmOb4rDb-4Wz9MSvpW4k_2oq4sZnzGS-YaazzJWfuzWnviw7IwaTTdrSOEeZPncLoVmGgcfkTCRsfg7nXGePlD8f7qZzhAJTsgz377C-cqh3_aileNc5Xbi-wQpHwyMh21WyKVkkU/s400/Screen+Shot+2018-08-02+at+7.09.28+AM.png" title="How to find the largest subarray with sum 0" width="400" /></a></div>
As solution we are going to iterate the give array from 0th index to nth index and sum each values and finding the subarray.</div>
<div style="background-color: white; border: 0px; font-family: "Open Sans", Helvetica, Arial, Verdana, sans-serif; font-size: 15px !important; line-height: 1.71429; margin-bottom: 10px; padding: 0px; text-align: justify; vertical-align: baseline;">
<b>Solution:</b></div>
<div style="background-color: white; border: 0px; line-height: 1.71429; margin-bottom: 10px; padding: 0px; text-align: justify; vertical-align: baseline;">
</div>
<ul>
<li>Iterating from starting to end of the array</li>
<li>Iterating sub array from 'start' to 'end' pointer and break if sum zero got or sub array smaller than previous sub array with zero </li>
</ul>
Lets see simple java code<br />
<div>
<br /></div>
<div>
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #008800;">public</span> <span style="color: #008800;">class</span> <span style="color: #bb0066;">SubArrayZero</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">public</span> <span style="color: #008800;">static</span> <span style="color: #333399;">void</span> <span style="color: #0066bb;">main</span><span style="color: #333333;">(</span>String<span style="color: #333333;">[]</span> args<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #333399;">int</span> array<span style="color: #333333;">[]</span> <span style="color: #333333;">=</span> <span style="color: #008800;">new</span> <span style="color: #333399;">int</span><span style="color: #333333;">[]</span> <span style="color: #333333;">{</span> <span style="color: #0000dd;">15</span><span style="color: #333333;">,</span> <span style="color: #333333;">-</span><span style="color: #0000dd;">2</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">2</span><span style="color: #333333;">,</span> <span style="color: #333333;">-</span><span style="color: #0000dd;">8</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">0</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">1</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">7</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">10</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">23</span> <span style="color: #333333;">};</span>
SubArrayZero obj <span style="color: #333333;">=</span> <span style="color: #008800;">new</span> SubArrayZero<span style="color: #333333;">();</span>
obj<span style="color: #333333;">.</span><span style="color: #0000cc;">getSubArraySumZero</span><span style="color: #333333;">(</span>array<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">public</span> <span style="color: #333399;">void</span> <span style="color: #0066bb;">getSubArraySumZero</span><span style="color: #333333;">(</span><span style="color: #333399;">int</span><span style="color: #333333;">[]</span> array<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #333399;">int</span> start <span style="color: #333333;">=</span> <span style="color: #0000dd;">0</span><span style="color: #333333;">,</span> end <span style="color: #333333;">=</span> <span style="color: #0000dd;">0</span><span style="color: #333333;">,</span> sum <span style="color: #333333;">=</span> <span style="color: #0000dd;">0</span><span style="color: #333333;">,</span> fStart <span style="color: #333333;">=</span> <span style="color: #0000dd;">1</span><span style="color: #333333;">,</span> fEnd <span style="color: #333333;">=</span> <span style="color: #333333;">-</span><span style="color: #0000dd;">1</span><span style="color: #333333;">;</span>
<span style="color: #888888;">// Iterating from starting to end of the array</span>
<span style="color: #008800;">for</span> <span style="color: #333333;">(</span><span style="color: #333399;">int</span> i <span style="color: #333333;">=</span> <span style="color: #0000dd;">0</span><span style="color: #333333;">;</span> i <span style="color: #333333;"><</span> array<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">;</span> i<span style="color: #333333;">++)</span> <span style="color: #333333;">{</span>
end <span style="color: #333333;">=</span> i<span style="color: #333333;">;</span>
sum <span style="color: #333333;">+=</span> array<span style="color: #333333;">[</span>i<span style="color: #333333;">];</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>sum <span style="color: #333333;">==</span> <span style="color: #0000dd;">0</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">((</span>fEnd <span style="color: #333333;">-</span> fStart<span style="color: #333333;">)</span> <span style="color: #333333;"><</span> <span style="color: #333333;">(</span>end <span style="color: #333333;">-</span> start<span style="color: #333333;">))</span> <span style="color: #333333;">{</span>
fStart <span style="color: #333333;">=</span> start<span style="color: #333333;">;</span>
fEnd <span style="color: #333333;">=</span> end<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #333333;">{</span>
<span style="color: #333399;">int</span> tSum <span style="color: #333333;">=</span> sum<span style="color: #333333;">;</span>
<span style="color: #888888;">/* Iterating sub array from 'start' to 'end' pointer and break</span>
<span style="color: #888888;"> * if sum zero got or sub array smaller than previous sub array with zero </span>
<span style="color: #888888;"> */</span>
<span style="color: #008800;">for</span> <span style="color: #333333;">(</span><span style="color: #333399;">int</span> j <span style="color: #333333;">=</span> start<span style="color: #333333;">;</span> j <span style="color: #333333;"><</span> end<span style="color: #333333;">;</span> j<span style="color: #333333;">++)</span> <span style="color: #333333;">{</span>
tSum <span style="color: #333333;">-=</span> array<span style="color: #333333;">[</span>j<span style="color: #333333;">];</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>tSum <span style="color: #333333;">==</span> <span style="color: #0000dd;">0</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">((</span>fEnd <span style="color: #333333;">-</span> fStart<span style="color: #333333;">)</span> <span style="color: #333333;"><</span> <span style="color: #333333;">(</span>end <span style="color: #333333;">-</span> <span style="color: #333333;">(</span>j <span style="color: #333333;">+</span> <span style="color: #0000dd;">1</span><span style="color: #333333;">)))</span> <span style="color: #333333;">{</span>
fStart <span style="color: #333333;">=</span> j <span style="color: #333333;">+</span> <span style="color: #0000dd;">1</span><span style="color: #333333;">;</span>
fEnd <span style="color: #333333;">=</span> end<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">break</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #008800;">if</span> <span style="color: #333333;">((</span>fEnd <span style="color: #333333;">-</span> fStart<span style="color: #333333;">)</span> <span style="color: #333333;">></span> <span style="color: #333333;">(</span>end <span style="color: #333333;">-</span> <span style="color: #333333;">(</span>j <span style="color: #333333;">+</span> <span style="color: #0000dd;">1</span><span style="color: #333333;">)))</span>
<span style="color: #008800;">break</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">if</span><span style="color: #333333;">(</span>fEnd <span style="color: #333333;">!=</span> <span style="color: #333333;">-</span><span style="color: #0000dd;">1</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"Start Index : "</span> <span style="color: #333333;">+</span> fStart<span style="color: #333333;">);</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"End Index : "</span> <span style="color: #333333;">+</span> fEnd<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span><span style="color: #008800;">else</span> <span style="color: #333333;">{</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"No subarray with sum 0"</span><span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
</pre>
</div>
</div>
<div>
<br /></div>
<div>
<b>OUTPUT:</b></div>
<div>
<br /></div>
<div>
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;">Start Index <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">1</span>
End Index <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">6</span>
</pre>
</div>
</div>
</div>
Java Discoverhttp://www.blogger.com/profile/18049511268651382259noreply@blogger.comtag:blogger.com,1999:blog-6801225484322010450.post-76015737474966442262018-07-28T23:00:00.001+05:302018-08-02T07:15:49.828+05:30How to find integer pairs with given sum<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="background-color: white; border: 0px; font-family: "Open Sans", Helvetica, Arial, Verdana, sans-serif; font-size: 15px !important; line-height: 1.71429; margin-bottom: 10px; padding: 0px; text-align: justify; vertical-align: baseline;">
Given an array of integers, and a number ‘sum’, find the number of pairs of integer in the array whose sum is equal to ‘sum’.</div>
<div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwJ12eNrqmhtn-KBuOKPTHBg-PqvHAkDqAugbZkIldMG5HJEsPSX_PWNHSeESHwL3NfNRSrmGpVoZ3XMCM4WkQ92QIleNBbPnHUvWBmyD2gVqI3cW9sZYvqjGXfDvj8efb1X4o8kF1k4g/s1600/Screen+Shot+2018-07-28+at+10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="How to get integer pairs with given sum from integer array" border="0" data-original-height="358" data-original-width="954" height="118" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwJ12eNrqmhtn-KBuOKPTHBg-PqvHAkDqAugbZkIldMG5HJEsPSX_PWNHSeESHwL3NfNRSrmGpVoZ3XMCM4WkQ92QIleNBbPnHUvWBmyD2gVqI3cW9sZYvqjGXfDvj8efb1X4o8kF1k4g/s320/Screen+Shot+2018-07-28+at+10.png" title="How to get integer pairs with given sum from integer array" width="320" /></a></div>
<br />
Array can be a combination of +ve, -ve and duplicate elements. Where we need to get the list of all unique pairs from the given array which makes sum is equal to given number. Easy solution with O(N) time complexity will be </div>
<div>
<ul style="text-align: left;">
<li>Iterate each element from array and store it in Set.</li>
<li>Compare the elements difference from sum as whether present in the Set or not. If present then print the pair with element and sum difference. </li>
<li>Remove the difference element from Set to avoid generating duplicate pair. </li>
</ul>
</div>
<div>
Lets see simple Java solution</div>
<div>
<br /></div>
<div>
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #008800;">import</span> <span style="color: #0e84b5;">java.util.HashSet</span><span style="color: #333333;">;</span>
<span style="color: #008800;">public</span> <span style="color: #008800;">class</span> <span style="color: #bb0066;">PairSum</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">public</span> <span style="color: #008800;">static</span> <span style="color: #333399;">void</span> <span style="color: #0066bb;">main</span><span style="color: #333333;">(</span>String<span style="color: #333333;">[]</span> args<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #333399;">int</span><span style="color: #333333;">[]</span> val <span style="color: #333333;">=</span> <span style="color: #008800;">new</span> <span style="color: #333399;">int</span><span style="color: #333333;">[]</span> <span style="color: #333333;">{</span> <span style="color: #0000dd;">1</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">7</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">3</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">3</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">3</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">4</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">3</span><span style="color: #333333;">,</span> <span style="color: #333333;">-</span><span style="color: #0000dd;">1</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">3</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">6</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">6</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">6</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">6</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">2</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">6</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">3</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">3</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">5</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">8</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">10</span> <span style="color: #333333;">};</span>
PairSum obj <span style="color: #333333;">=</span> <span style="color: #008800;">new</span> PairSum<span style="color: #333333;">();</span>
obj<span style="color: #333333;">.</span><span style="color: #0000cc;">getPairs</span><span style="color: #333333;">(</span>val<span style="color: #333333;">,</span> <span style="color: #0000dd;">9</span><span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">public</span> <span style="color: #333399;">void</span> <span style="color: #0066bb;">getPairs</span><span style="color: #333333;">(</span><span style="color: #333399;">int</span><span style="color: #333333;">[]</span> val<span style="color: #333333;">,</span> <span style="color: #333399;">int</span> sum<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
HashSet<span style="color: #333333;"><</span>Integer<span style="color: #333333;">></span> set <span style="color: #333333;">=</span> <span style="color: #008800;">new</span> HashSet<span style="color: #333333;"><</span>Integer<span style="color: #333333;">>();</span>
<span style="color: #333399;">int</span> count <span style="color: #333333;">=</span> <span style="color: #0000dd;">0</span><span style="color: #333333;">;</span>
<span style="color: #008800;">for</span> <span style="color: #333333;">(</span><span style="color: #333399;">int</span> i <span style="color: #333333;">:</span> val<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>set<span style="color: #333333;">.</span><span style="color: #0000cc;">contains</span><span style="color: #333333;">(</span>sum <span style="color: #333333;">-</span> i<span style="color: #333333;">))</span> <span style="color: #333333;">{</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"Pair : ("</span> <span style="color: #333333;">+</span> <span style="color: #333333;">(</span>sum <span style="color: #333333;">-</span> i<span style="color: #333333;">)</span> <span style="color: #333333;">+</span> <span style="background-color: #fff0f0;">", "</span> <span style="color: #333333;">+</span> i <span style="color: #333333;">+</span> <span style="background-color: #fff0f0;">")"</span><span style="color: #333333;">);</span>
set<span style="color: #333333;">.</span><span style="color: #0000cc;">remove</span><span style="color: #333333;">(</span>sum <span style="color: #333333;">-</span> i<span style="color: #333333;">);</span> <span style="color: #888888;">// Removing existing value from set to avoid duplicate pair to print</span>
count<span style="color: #333333;">++;</span>
<span style="color: #333333;">}</span>
set<span style="color: #333333;">.</span><span style="color: #0000cc;">add</span><span style="color: #333333;">(</span>i<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"\nNo. of pairs : "</span><span style="color: #333333;">+</span>count<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
</pre>
</div>
</div>
<div>
<br /></div>
<div>
<b>OUTPUT:</b></div>
<div>
<br /></div>
<div>
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;">Pair <span style="color: #333333;">:</span> <span style="color: #333333;">(</span><span style="color: #0000dd; font-weight: bold;">3</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">6</span><span style="color: #333333;">)</span>
Pair <span style="color: #333333;">:</span> <span style="color: #333333;">(</span><span style="color: #0000dd; font-weight: bold;">7</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">2</span><span style="color: #333333;">)</span>
Pair <span style="color: #333333;">:</span> <span style="color: #333333;">(</span><span style="color: #0000dd; font-weight: bold;">6</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">3</span><span style="color: #333333;">)</span>
Pair <span style="color: #333333;">:</span> <span style="color: #333333;">(</span><span style="color: #0000dd; font-weight: bold;">4</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">5</span><span style="color: #333333;">)</span>
Pair <span style="color: #333333;">:</span> <span style="color: #333333;">(</span><span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">8</span><span style="color: #333333;">)</span>
Pair <span style="color: #333333;">:</span> <span style="color: #333333;">(-</span><span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">10</span><span style="color: #333333;">)</span>
No<span style="color: #333333;">.</span> of pairs <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">6</span>
</pre>
</div>
</div>
</div>
Java Discoverhttp://www.blogger.com/profile/18049511268651382259noreply@blogger.comtag:blogger.com,1999:blog-6801225484322010450.post-62059279236697721072018-07-27T00:05:00.000+05:302018-07-27T00:05:06.061+05:30How to print singly linked list in reverse order<div dir="ltr" style="text-align: left;" trbidi="on">
If we talk about Singly Linked List then it will be a 1 way traversal from head node to tail node. But if we need to print the linked list values from tail node to head node (in reverse order) with O(N) time complexity. ???<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1jArwHw0eTBdhrevaskxda8B1mJLBMvrZtTCUGeA16LjQ9kd2YbzwRIFsc2ySMxzk1GGGTEn5JE3Etq_1tiAb-fnHKi_svZq1ZEgheFBpYl2b9iB_-6mk-K-iuSx6_wUBsiqQV-wqlfI/s1600/Print+Reverse+Linked+List.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="How to print singly linked list in reverse order" border="0" data-original-height="304" data-original-width="1198" height="101" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1jArwHw0eTBdhrevaskxda8B1mJLBMvrZtTCUGeA16LjQ9kd2YbzwRIFsc2ySMxzk1GGGTEn5JE3Etq_1tiAb-fnHKi_svZq1ZEgheFBpYl2b9iB_-6mk-K-iuSx6_wUBsiqQV-wqlfI/s400/Print+Reverse+Linked+List.png" title="How to print singly linked list in reverse order" width="400" /></a></div>
<ul style="text-align: left;">
<li>Its simple just we need to apply recursive algorithm where we need to start from head node and reach tail which is last node.</li>
<li>Next print each node values in recursive call. By this way we can achieve printing linked list in recursive order without traversing more than once which is by time complexity O(N) only. </li>
</ul>
<div>
Lets see simple code to create Singly Linked List and printing same Linked List in reverse order with O(N) complexity.</div>
<div>
<br /></div>
<div>
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #008800;">class</span> <span style="color: #bb0066;">NODE</span> <span style="color: #333333;">{</span>
<span style="color: #333399;">int</span> data<span style="color: #333333;">;</span>
NODE next<span style="color: #333333;">;</span>
<span style="color: #008800;">public</span> <span style="color: #0066bb;">NODE</span><span style="color: #333333;">(</span><span style="color: #333399;">int</span> data<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">this</span><span style="color: #333333;">.</span><span style="color: #0000cc;">data</span> <span style="color: #333333;">=</span> data<span style="color: #333333;">;</span>
<span style="color: #008800;">this</span><span style="color: #333333;">.</span><span style="color: #0000cc;">next</span> <span style="color: #333333;">=</span> <span style="color: #008800;">null</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">public</span> <span style="color: #008800;">class</span> <span style="color: #bb0066;">PrintLinkedList</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">public</span> <span style="color: #008800;">static</span> <span style="color: #333399;">void</span> <span style="color: #0066bb;">main</span><span style="color: #333333;">(</span>String<span style="color: #333333;">[]</span> args<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
PrintLinkedList obj <span style="color: #333333;">=</span> <span style="color: #008800;">new</span> PrintLinkedList<span style="color: #333333;">();</span>
<span style="color: #333399;">int</span> val<span style="color: #333333;">[]</span> <span style="color: #333333;">=</span> <span style="color: #008800;">new</span> <span style="color: #333399;">int</span><span style="color: #333333;">[]</span> <span style="color: #333333;">{</span> <span style="color: #0000dd;">1</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">5</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">7</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">10</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">89</span> <span style="color: #333333;">};</span>
NODE head <span style="color: #333333;">=</span> obj<span style="color: #333333;">.</span><span style="color: #0000cc;">createLinkedList</span><span style="color: #333333;">(</span>val<span style="color: #333333;">);</span>
obj<span style="color: #333333;">.</span><span style="color: #0000cc;">printLLInReverse</span><span style="color: #333333;">(</span>head<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #888888;">/*</span>
<span style="color: #888888;"> * Recursive method to print LL in reverse order</span>
<span style="color: #888888;"> */</span>
<span style="color: #008800;">public</span> <span style="color: #333399;">void</span> <span style="color: #0066bb;">printLLInReverse</span><span style="color: #333333;">(</span>NODE tmp<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>tmp <span style="color: #333333;">!=</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
printLLInReverse<span style="color: #333333;">(</span>tmp<span style="color: #333333;">.</span><span style="color: #0000cc;">next</span><span style="color: #333333;">);</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span>tmp<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span><span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #888888;">/*</span>
<span style="color: #888888;"> * Create linked list based on given array</span>
<span style="color: #888888;"> */</span>
<span style="color: #008800;">public</span> NODE <span style="color: #0066bb;">createLinkedList</span><span style="color: #333333;">(</span><span style="color: #333399;">int</span> val<span style="color: #333333;">[])</span> <span style="color: #333333;">{</span>
NODE start <span style="color: #333333;">=</span> <span style="color: #008800;">null</span><span style="color: #333333;">;</span>
<span style="color: #008800;">for</span> <span style="color: #333333;">(</span><span style="color: #333399;">int</span> i <span style="color: #333333;">:</span> val<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
NODE tmp <span style="color: #333333;">=</span> <span style="color: #008800;">new</span> NODE<span style="color: #333333;">(</span>i<span style="color: #333333;">);</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>start <span style="color: #333333;">==</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
start <span style="color: #333333;">=</span> tmp<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #333333;">{</span>
NODE mover <span style="color: #333333;">=</span> start<span style="color: #333333;">;</span>
<span style="color: #008800;">while</span> <span style="color: #333333;">(</span>mover<span style="color: #333333;">.</span><span style="color: #0000cc;">next</span> <span style="color: #333333;">!=</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
mover <span style="color: #333333;">=</span> mover<span style="color: #333333;">.</span><span style="color: #0000cc;">next</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
mover<span style="color: #333333;">.</span><span style="color: #0000cc;">next</span> <span style="color: #333333;">=</span> tmp<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">return</span> start<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
</pre>
</div>
</div>
<div>
<br /></div>
<div>
<b>OUTPUT:</b></div>
<div>
<br /></div>
<div>
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #0000dd; font-weight: bold;">89</span>
<span style="color: #0000dd; font-weight: bold;">10</span>
<span style="color: #0000dd; font-weight: bold;">7</span>
<span style="color: #0000dd; font-weight: bold;">5</span>
<span style="color: #0000dd; font-weight: bold;">1</span>
</pre>
</div>
</div>
</div>
Java Discoverhttp://www.blogger.com/profile/18049511268651382259noreply@blogger.comtag:blogger.com,1999:blog-6801225484322010450.post-38601562221776819312018-07-20T01:30:00.001+05:302018-07-20T07:02:22.605+05:30How to Design a simple LRU cache in Java<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="color: #222222; font-family: "arial" , "helvetica" , sans-serif;"><span style="background-color: white; font-size: 17px;">Design and implement a data structure for Least Recently Used (LRU) cache by supporting set() and get() operations with O(1) complexity. </span></span><br />
<br />
<span style="color: #222222; font-family: "arial" , "helvetica" , sans-serif;"><span style="background-color: white; font-size: 17px;"><b>Least Recently Used (LRU) Cache?</b></span></span><br />
<span style="color: #222222; font-family: "arial" , "helvetica" , sans-serif;"><span style="background-color: white; font-size: 17px;"><br /></span></span>
<span style="color: #222222; font-family: "arial" , "helvetica" , sans-serif;"><span style="background-color: white; font-size: 17px;">Its a caching mechanism where we evicts least recently used items from the cache to accommodate new entries at top. So in that case in cache we maintain only the recently used data and least used entries will be evicted once we need to set new value in cache. </span></span><br />
<span style="color: #222222; font-family: "arial" , "helvetica" , sans-serif;"><span style="background-color: white; font-size: 17px;"><br /></span></span>
<span style="color: #222222; font-family: "arial" , "helvetica" , sans-serif;"><span style="background-color: white; font-size: 17px;"><b>How to implement simple LRU Cache?</b></span></span><br />
<span style="color: #222222; font-family: "arial" , "helvetica" , sans-serif;"><span style="background-color: white; font-size: 17px;"><br /></span></span>
<span style="color: #222222; font-family: "arial" , "helvetica" , sans-serif;"><span style="background-color: white; font-size: 17px;">We can implement by using multiple data structure like stack, Queue, LinkedList etc., </span></span><br />
<span style="color: #222222; font-family: "arial" , "helvetica" , sans-serif;"><span style="background-color: white; font-size: 17px;">Now in this tutorial lets see how to implement by using Doubly LinkedList and map to hold the LinkedList nodes which makes O(1) complexity for our read / get() operation.</span></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZt6UpKnlUsgT9QMBiUxhFimUPjgnQ5kfvdjreM0fAdcDypbdL0Kwps65hAKhKnVCwNkYxC_uCYM8y8BTTtWTLT22x5gz9MHjsEJcUve4ZJBplwFvJh9P32_CmOQ-l0BJYJxhCm7D-MJw/s1600/How+to+Design+a+simple+LRU+cache+in+Java.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="How to Design a simple LRU cache in Java" border="0" data-original-height="908" data-original-width="1010" height="287" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZt6UpKnlUsgT9QMBiUxhFimUPjgnQ5kfvdjreM0fAdcDypbdL0Kwps65hAKhKnVCwNkYxC_uCYM8y8BTTtWTLT22x5gz9MHjsEJcUve4ZJBplwFvJh9P32_CmOQ-l0BJYJxhCm7D-MJw/s320/How+to+Design+a+simple+LRU+cache+in+Java.png" title="How to Design a simple LRU cache in Java" width="320" /></a></div>
<br />
<span style="color: #222222; font-family: "arial" , "helvetica" , sans-serif;"><span style="background-color: white; font-size: 17px;"><b>Steps:</b></span></span><br />
<br />
<ul style="text-align: left;">
<li>NodeLRU class which holds the data, next and previous node values.</li>
<li>In LRUCache setting cache size as 5 to make it simple </li>
<li><b>set</b>() method will check already value present in map or not. If its present remove the existing value from map and LinkedList and add the new value in LinkedList and map.</li>
<li><b>get</b>() method will fetch node if present in map and return the values or else return -1 if not present. </li>
<li>Once we get the value the node will be shifted to the head of LinkedList to make it as recently used. </li>
</ul>
<br />
<span style="color: #222222; font-family: "arial" , "helvetica" , sans-serif;"><span style="background-color: white; font-size: 17px;">By this way we can implement the LRU cache with simple logic by using LinkedList and map. Lets see the java implementation for the same</span></span><br />
<span style="color: #222222; font-family: "arial" , "helvetica" , sans-serif;"><span style="background-color: white; font-size: 17px;"><br /></span></span>
<span style="background-color: white;"><span style="color: #222222; font-family: "arial" , sans-serif;">
<!-- HTML generated using hilite.me --></span></span><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="background-color: white;"><span style="color: #222222; font-family: "arial" , sans-serif;"><span style="color: #008800;">import</span> <span style="color: #0e84b5;">java.util.HashMap</span><span style="color: #333333;">;</span>
<span style="color: #008800;">import</span> <span style="color: #0e84b5;">java.util.Map.Entry</span><span style="color: #333333;">;</span>
<span style="color: #888888;">/*</span>
<span style="color: #888888;"> * LinkedList node to hold the cached data</span>
<span style="color: #888888;"> */</span>
<span style="color: #008800;">class</span> <span style="color: #bb0066;">NodeLRU</span> <span style="color: #333333;">{</span>
<span style="color: #333399;">int</span> data<span style="color: #333333;">;</span>
NodeLRU next<span style="color: #333333;">;</span>
NodeLRU previous<span style="color: #333333;">;</span>
<span style="color: #008800;">public</span> <span style="color: #0066bb;">NodeLRU</span><span style="color: #333333;">(</span><span style="color: #333399;">int</span> data<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">this</span><span style="color: #333333;">.</span><span style="color: #0000cc;">data</span> <span style="color: #333333;">=</span> data<span style="color: #333333;">;</span>
<span style="color: #008800;">this</span><span style="color: #333333;">.</span><span style="color: #0000cc;">next</span> <span style="color: #333333;">=</span> <span style="color: #008800;">null</span><span style="color: #333333;">;</span>
<span style="color: #008800;">this</span><span style="color: #333333;">.</span><span style="color: #0000cc;">previous</span> <span style="color: #333333;">=</span> <span style="color: #008800;">null</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #888888;">/**</span>
<span style="color: #888888;"> * Implementing LRU Cache using LinkedList and HashMap to get() value with O(1) </span>
<span style="color: #888888;"> * time complexity.</span>
<span style="color: #888888;"> */</span>
<span style="color: #008800;">class</span> <span style="color: #bb0066;">LRUCache</span> <span style="color: #333333;">{</span>
<span style="color: #888888;">// Total cache size </span>
<span style="color: #008800;">private</span> <span style="color: #008800;">final</span> <span style="color: #008800;">static</span> <span style="color: #333399;">int</span> CACHE_SIZE <span style="color: #333333;">=</span> <span style="color: #0000dd;">5</span><span style="color: #333333;">;</span>
<span style="color: #888888;">// Map to hold the cached nodes</span>
<span style="color: #008800;">private</span> HashMap<span style="color: #333333;"><</span>Integer<span style="color: #333333;">,</span> NodeLRU<span style="color: #333333;">></span> map <span style="color: #333333;">=</span> <span style="color: #008800;">new</span> HashMap<span style="color: #333333;"><</span>Integer<span style="color: #333333;">,</span> NodeLRU<span style="color: #333333;">>(</span>CACHE_SIZE<span style="color: #333333;">);</span>
<span style="color: #888888;">// Doubly LinkedList head and tail node pointer</span>
<span style="color: #008800;">private</span> NodeLRU head <span style="color: #333333;">=</span> <span style="color: #008800;">null</span><span style="color: #333333;">;</span>
<span style="color: #008800;">private</span> NodeLRU tail <span style="color: #333333;">=</span> <span style="color: #008800;">null</span><span style="color: #333333;">;</span>
<span style="color: #888888;">/*</span>
<span style="color: #888888;"> * Set method which will add data into LinkedList</span>
<span style="color: #888888;"> * and if already key present then remove and ADD as new element.</span>
<span style="color: #888888;"> */</span>
<span style="color: #008800;">public</span> <span style="color: #333399;">void</span> <span style="color: #0066bb;">set</span><span style="color: #333333;">(</span><span style="color: #333399;">int</span> key<span style="color: #333333;">,</span> <span style="color: #333399;">int</span> val<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>map<span style="color: #333333;">.</span><span style="color: #0000cc;">containsKey</span><span style="color: #333333;">(</span>key<span style="color: #333333;">))</span> <span style="color: #333333;">{</span>
removeExistingNode<span style="color: #333333;">(</span>key<span style="color: #333333;">,</span> val<span style="color: #333333;">);</span>
set<span style="color: #333333;">(</span>key<span style="color: #333333;">,</span> val<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #333333;">{</span>
addNode<span style="color: #333333;">(</span>key<span style="color: #333333;">,</span> val<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #888888;">/*</span>
<span style="color: #888888;"> * Get method which will return node data if present</span>
<span style="color: #888888;"> * else returns -1. Once if data node present in map then</span>
<span style="color: #888888;"> * Fetch the node and place it @ head location. </span>
<span style="color: #888888;"> */</span>
<span style="color: #008800;">public</span> <span style="color: #333399;">int</span> <span style="color: #0066bb;">get</span><span style="color: #333333;">(</span><span style="color: #333399;">int</span> key<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>map<span style="color: #333333;">.</span><span style="color: #0000cc;">containsKey</span><span style="color: #333333;">(</span>key<span style="color: #333333;">))</span> <span style="color: #333333;">{</span>
NodeLRU node <span style="color: #333333;">=</span> map<span style="color: #333333;">.</span><span style="color: #0000cc;">get</span><span style="color: #333333;">(</span>key<span style="color: #333333;">);</span>
makeAsRecentUsed<span style="color: #333333;">(</span>node<span style="color: #333333;">);</span>
<span style="color: #008800;">return</span> node<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">return</span> <span style="color: #333333;">-</span><span style="color: #0000dd;">1</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #888888;">/*</span>
<span style="color: #888888;"> * One if node present via get() method then </span>
<span style="color: #888888;"> * pick out the node and stitch with head location as first node.</span>
<span style="color: #888888;"> * </span>
<span style="color: #888888;"> */</span>
<span style="color: #008800;">private</span> <span style="color: #333399;">void</span> <span style="color: #0066bb;">makeAsRecentUsed</span><span style="color: #333333;">(</span>NodeLRU node<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>node<span style="color: #333333;">.</span><span style="color: #0000cc;">equals</span><span style="color: #333333;">(</span>head<span style="color: #333333;">))</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">return</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #008800;">if</span> <span style="color: #333333;">(</span>node<span style="color: #333333;">.</span><span style="color: #0000cc;">equals</span><span style="color: #333333;">(</span>tail<span style="color: #333333;">))</span> <span style="color: #333333;">{</span>
tail<span style="color: #333333;">.</span><span style="color: #0000cc;">previous</span><span style="color: #333333;">.</span><span style="color: #0000cc;">next</span> <span style="color: #333333;">=</span> <span style="color: #008800;">null</span><span style="color: #333333;">;</span>
tail <span style="color: #333333;">=</span> tail<span style="color: #333333;">.</span><span style="color: #0000cc;">previous</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #333333;">{</span>
node<span style="color: #333333;">.</span><span style="color: #0000cc;">previous</span><span style="color: #333333;">.</span><span style="color: #0000cc;">next</span> <span style="color: #333333;">=</span> node<span style="color: #333333;">.</span><span style="color: #0000cc;">next</span><span style="color: #333333;">;</span>
node<span style="color: #333333;">.</span><span style="color: #0000cc;">next</span><span style="color: #333333;">.</span><span style="color: #0000cc;">previous</span> <span style="color: #333333;">=</span> node<span style="color: #333333;">.</span><span style="color: #0000cc;">previous</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
node<span style="color: #333333;">.</span><span style="color: #0000cc;">previous</span> <span style="color: #333333;">=</span> <span style="color: #008800;">null</span><span style="color: #333333;">;</span>
node<span style="color: #333333;">.</span><span style="color: #0000cc;">next</span> <span style="color: #333333;">=</span> head<span style="color: #333333;">;</span>
head<span style="color: #333333;">.</span><span style="color: #0000cc;">previous</span> <span style="color: #333333;">=</span> node<span style="color: #333333;">;</span>
head <span style="color: #333333;">=</span> node<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #888888;">/*</span>
<span style="color: #888888;"> * Delete the least used node frm LinkedList and map</span>
<span style="color: #888888;"> */</span>
<span style="color: #008800;">private</span> <span style="color: #333399;">void</span> <span style="color: #0066bb;">removeExistingNode</span><span style="color: #333333;">(</span><span style="color: #333399;">int</span> key<span style="color: #333333;">,</span> <span style="color: #333399;">int</span> val<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
NodeLRU tmp <span style="color: #333333;">=</span> map<span style="color: #333333;">.</span><span style="color: #0000cc;">get</span><span style="color: #333333;">(</span>key<span style="color: #333333;">);</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>tmp<span style="color: #333333;">.</span><span style="color: #0000cc;">next</span> <span style="color: #333333;">!=</span> <span style="color: #008800;">null</span> <span style="color: #333333;">&&</span> tmp<span style="color: #333333;">.</span><span style="color: #0000cc;">previous</span> <span style="color: #333333;">!=</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
tmp<span style="color: #333333;">.</span><span style="color: #0000cc;">previous</span><span style="color: #333333;">.</span><span style="color: #0000cc;">next</span> <span style="color: #333333;">=</span> tmp<span style="color: #333333;">.</span><span style="color: #0000cc;">next</span><span style="color: #333333;">;</span>
tmp<span style="color: #333333;">.</span><span style="color: #0000cc;">next</span><span style="color: #333333;">.</span><span style="color: #0000cc;">previous</span> <span style="color: #333333;">=</span> tmp<span style="color: #333333;">.</span><span style="color: #0000cc;">previous</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #008800;">if</span> <span style="color: #333333;">(</span>tmp<span style="color: #333333;">.</span><span style="color: #0000cc;">equals</span><span style="color: #333333;">(</span>tail<span style="color: #333333;">))</span> <span style="color: #333333;">{</span>
removeLeastUsed<span style="color: #333333;">();</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #008800;">if</span> <span style="color: #333333;">(</span>tmp<span style="color: #333333;">.</span><span style="color: #0000cc;">equals</span><span style="color: #333333;">(</span>head<span style="color: #333333;">))</span> <span style="color: #333333;">{</span>
removeHeadNode<span style="color: #333333;">();</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #888888;">/*</span>
<span style="color: #888888;"> * Removing 1st node</span>
<span style="color: #888888;"> */</span>
<span style="color: #008800;">private</span> <span style="color: #333399;">void</span> <span style="color: #0066bb;">removeHeadNode</span><span style="color: #333333;">()</span> <span style="color: #333333;">{</span>
NodeLRU firstNode <span style="color: #333333;">=</span> head<span style="color: #333333;">;</span>
tail <span style="color: #333333;">=</span> tail<span style="color: #333333;">.</span><span style="color: #0000cc;">next</span><span style="color: #333333;">;</span>
tail<span style="color: #333333;">.</span><span style="color: #0000cc;">previous</span> <span style="color: #333333;">=</span> <span style="color: #008800;">null</span><span style="color: #333333;">;</span>
removeFromMap<span style="color: #333333;">(</span>firstNode<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #888888;">/*</span>
<span style="color: #888888;"> * Adding new node to LinkedList</span>
<span style="color: #888888;"> */</span>
<span style="color: #008800;">private</span> <span style="color: #333399;">void</span> <span style="color: #0066bb;">addNode</span><span style="color: #333333;">(</span><span style="color: #333399;">int</span> key<span style="color: #333333;">,</span> <span style="color: #333399;">int</span> val<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>map<span style="color: #333333;">.</span><span style="color: #0000cc;">size</span><span style="color: #333333;">()</span> <span style="color: #333333;"><</span> CACHE_SIZE<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
NodeLRU tmp <span style="color: #333333;">=</span> <span style="color: #008800;">new</span> NodeLRU<span style="color: #333333;">(</span>val<span style="color: #333333;">);</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>head <span style="color: #333333;">==</span> <span style="color: #008800;">null</span> <span style="color: #333333;">&&</span> tail <span style="color: #333333;">==</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
head <span style="color: #333333;">=</span> tail <span style="color: #333333;">=</span> tmp<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #333333;">{</span>
head<span style="color: #333333;">.</span><span style="color: #0000cc;">previous</span> <span style="color: #333333;">=</span> tmp<span style="color: #333333;">;</span>
tmp<span style="color: #333333;">.</span><span style="color: #0000cc;">next</span> <span style="color: #333333;">=</span> head<span style="color: #333333;">;</span>
head <span style="color: #333333;">=</span> tmp<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
map<span style="color: #333333;">.</span><span style="color: #0000cc;">put</span><span style="color: #333333;">(</span>key<span style="color: #333333;">,</span> tmp<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #333333;">{</span>
removeLeastUsed<span style="color: #333333;">();</span>
addNode<span style="color: #333333;">(</span>key<span style="color: #333333;">,</span> val<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #888888;">/*</span>
<span style="color: #888888;"> * Removing least/ last node from LinkedList</span>
<span style="color: #888888;"> */</span>
<span style="color: #008800;">private</span> <span style="color: #333399;">void</span> <span style="color: #0066bb;">removeLeastUsed</span><span style="color: #333333;">()</span> <span style="color: #333333;">{</span>
NodeLRU leastUsed <span style="color: #333333;">=</span> tail<span style="color: #333333;">;</span>
tail <span style="color: #333333;">=</span> tail<span style="color: #333333;">.</span><span style="color: #0000cc;">previous</span><span style="color: #333333;">;</span>
tail<span style="color: #333333;">.</span><span style="color: #0000cc;">next</span> <span style="color: #333333;">=</span> <span style="color: #008800;">null</span><span style="color: #333333;">;</span>
removeFromMap<span style="color: #333333;">(</span>leastUsed<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #888888;">/*</span>
<span style="color: #888888;"> * Removing from map also based on value node</span>
<span style="color: #888888;"> */</span>
<span style="color: #008800;">private</span> <span style="color: #333399;">void</span> <span style="color: #0066bb;">removeFromMap</span><span style="color: #333333;">(</span>NodeLRU node<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">for</span> <span style="color: #333333;">(</span>Entry<span style="color: #333333;"><</span>Integer<span style="color: #333333;">,</span> NodeLRU<span style="color: #333333;">></span> entry <span style="color: #333333;">:</span> map<span style="color: #333333;">.</span><span style="color: #0000cc;">entrySet</span><span style="color: #333333;">())</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>entry<span style="color: #333333;">.</span><span style="color: #0000cc;">getValue</span><span style="color: #333333;">().</span><span style="color: #0000cc;">equals</span><span style="color: #333333;">(</span>node<span style="color: #333333;">))</span> <span style="color: #333333;">{</span>
map<span style="color: #333333;">.</span><span style="color: #0000cc;">remove</span><span style="color: #333333;">(</span>entry<span style="color: #333333;">.</span><span style="color: #0000cc;">getKey</span><span style="color: #333333;">());</span>
<span style="color: #008800;">return</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #888888;">/*</span>
<span style="color: #888888;"> * Method to print all LinkedList nodes data</span>
<span style="color: #888888;"> */</span>
<span style="color: #008800;">public</span> <span style="color: #333399;">void</span> <span style="color: #0066bb;">printValueFromCache</span><span style="color: #333333;">()</span> <span style="color: #333333;">{</span>
NodeLRU tmp <span style="color: #333333;">=</span> head<span style="color: #333333;">;</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">print</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"CACHE VALUES : "</span><span style="color: #333333;">);</span>
<span style="color: #008800;">while</span> <span style="color: #333333;">(</span>tmp <span style="color: #333333;">!=</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">print</span><span style="color: #333333;">(</span>tmp<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span> <span style="color: #333333;">+</span> <span style="background-color: #fff0f0;">", "</span><span style="color: #333333;">);</span>
tmp <span style="color: #333333;">=</span> tmp<span style="color: #333333;">.</span><span style="color: #0000cc;">next</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">();</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">public</span> <span style="color: #008800;">static</span> <span style="color: #333399;">void</span> <span style="color: #0066bb;">main</span><span style="color: #333333;">(</span>String<span style="color: #333333;">[]</span> args<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
LRUCache obj <span style="color: #333333;">=</span> <span style="color: #008800;">new</span> LRUCache<span style="color: #333333;">();</span>
<span style="color: #888888;">// Adding 1 to 5 values to cache</span>
obj<span style="color: #333333;">.</span><span style="color: #0000cc;">set</span><span style="color: #333333;">(</span><span style="color: #0000dd;">1</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">11</span><span style="color: #333333;">);</span>
obj<span style="color: #333333;">.</span><span style="color: #0000cc;">set</span><span style="color: #333333;">(</span><span style="color: #0000dd;">2</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">12</span><span style="color: #333333;">);</span>
obj<span style="color: #333333;">.</span><span style="color: #0000cc;">set</span><span style="color: #333333;">(</span><span style="color: #0000dd;">3</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">13</span><span style="color: #333333;">);</span>
obj<span style="color: #333333;">.</span><span style="color: #0000cc;">set</span><span style="color: #333333;">(</span><span style="color: #0000dd;">4</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">14</span><span style="color: #333333;">);</span>
obj<span style="color: #333333;">.</span><span style="color: #0000cc;">set</span><span style="color: #333333;">(</span><span style="color: #0000dd;">5</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">15</span><span style="color: #333333;">);</span>
obj<span style="color: #333333;">.</span><span style="color: #0000cc;">printValueFromCache</span><span style="color: #333333;">();</span>
<span style="color: #888888;">/*</span>
<span style="color: #888888;"> * Reading value with key (1) which we adding 1st and</span>
<span style="color: #888888;"> * placed last in LL. Once we read same value (Node) should </span>
<span style="color: #888888;"> * be placed as recent and moved to top of linked List.</span>
<span style="color: #888888;"> */</span>
<span style="color: #333399;">int</span> val <span style="color: #333333;">=</span> obj<span style="color: #333333;">.</span><span style="color: #0000cc;">get</span><span style="color: #333333;">(</span><span style="color: #0000dd;">1</span><span style="color: #333333;">);</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"READ VALUE : "</span><span style="color: #333333;">+</span>val<span style="color: #333333;">);</span>
obj<span style="color: #333333;">.</span><span style="color: #0000cc;">printValueFromCache</span><span style="color: #333333;">();</span>
<span style="color: #888888;">/*</span>
<span style="color: #888888;"> * Adding some more values to Cache. Since we set cache size as 5</span>
<span style="color: #888888;"> * least used 3 nodes like (2,3,4) need to removed and (6,7,8)</span>
<span style="color: #888888;"> * values need to added to linked list </span>
<span style="color: #888888;"> */</span>
obj<span style="color: #333333;">.</span><span style="color: #0000cc;">set</span><span style="color: #333333;">(</span><span style="color: #0000dd;">6</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">66</span><span style="color: #333333;">);</span>
obj<span style="color: #333333;">.</span><span style="color: #0000cc;">set</span><span style="color: #333333;">(</span><span style="color: #0000dd;">7</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">77</span><span style="color: #333333;">);</span>
obj<span style="color: #333333;">.</span><span style="color: #0000cc;">set</span><span style="color: #333333;">(</span><span style="color: #0000dd;">8</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">88</span><span style="color: #333333;">);</span>
obj<span style="color: #333333;">.</span><span style="color: #0000cc;">printValueFromCache</span><span style="color: #333333;">();</span>
<span style="color: #888888;">/*</span>
<span style="color: #888888;"> * Reading again with key (5) which makes node to shift to head</span>
<span style="color: #888888;"> * which will be recently used</span>
<span style="color: #888888;"> */</span>
val <span style="color: #333333;">=</span> obj<span style="color: #333333;">.</span><span style="color: #0000cc;">get</span><span style="color: #333333;">(</span><span style="color: #0000dd;">5</span><span style="color: #333333;">);</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"READ VALUE : "</span><span style="color: #333333;">+</span>val<span style="color: #333333;">);</span>
obj<span style="color: #333333;">.</span><span style="color: #0000cc;">printValueFromCache</span><span style="color: #333333;">();</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
</span></span></pre>
</div>
<span style="background-color: white;"><span style="color: #222222; font-family: "arial" , sans-serif;">
</span></span><br />
<span style="background-color: white;"><span style="color: #222222; font-family: "arial" , sans-serif;"><br /></span></span>
<span style="background-color: white;"><span style="color: #222222; font-family: "arial" , sans-serif;"><b>OUTPUT:</b></span></span><br />
<span style="background-color: white;"><span style="color: #222222; font-family: "arial" , sans-serif;"><br /></span></span>
<span style="background-color: white;"><span style="color: #222222; font-family: "arial" , sans-serif;">
<!-- HTML generated using hilite.me --></span></span><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="background-color: white;"><span style="color: #222222; font-family: "arial" , sans-serif;">CACHE VALUES <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">15</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">14</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">13</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">12</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">11</span><span style="color: #333333;">,</span>
READ VALUE <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">11</span>
CACHE VALUES <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">11</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">15</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">14</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">13</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">12</span><span style="color: #333333;">,</span>
CACHE VALUES <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">88</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">77</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">66</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">11</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">15</span><span style="color: #333333;">,</span>
READ VALUE <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">15</span>
CACHE VALUES <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">15</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">88</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">77</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">66</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">11</span><span style="color: #333333;">,</span>
</span></span></pre>
</div>
<span style="background-color: white;"><span style="color: #222222; font-family: "arial" , sans-serif;">
</span></span></div>
Java Discoverhttp://www.blogger.com/profile/18049511268651382259noreply@blogger.comtag:blogger.com,1999:blog-6801225484322010450.post-28968354244173579602018-07-17T05:35:00.000+05:302018-07-17T10:59:59.077+05:30How to get Maximum Subarray Sum in optimal way<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="background-color: white; border: 0px; font-family: "Open Sans", Helvetica, Arial, Verdana, sans-serif; font-size: 15px !important; line-height: 1.71429; margin-bottom: 10px; padding: 0px; text-align: justify; vertical-align: baseline;">
Given an array with both positive and negative integers and need to find the sum of contiguous subarray of numbers which has the largest sum along with the index values like start and end index from the given array. Also time complexity with O(N)</div>
<div>
<span style="background-color: white; font-family: "open sans" , "helvetica" , "arial" , "verdana" , sans-serif; font-size: 15px; text-align: justify;">For example, if the given array is {</span><span style="font-family: "monaco"; font-size: 11px;">-2, <b><span style="color: red;">5, 4, -3, 6, 9</span></b>, -1</span><span style="background-color: white; font-family: "open sans" , "helvetica" , "arial" , "verdana" , sans-serif; font-size: 15px; text-align: justify;">}, then the maximum subarray sum is 21 and array index from 1 to 5 which is 5 + 4 + -3 + 6 + 9 = 21.</span></div>
<div>
<br /></div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlbNwrnIwqh9h7Xd8y2XzO7CJbU706pETbbRFgKbE1Fd03i48kZyJyE9mA3cvM9o0ij6yhT6kC8JektCN9wKXODO0zVdqYv8uitPvdoSfDFR3Xp1DuBFDnUdWokNHMdXsVf92766d1iKU/s1600/Screen+Shot+2018-07-17+at+5.31.24+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="How to get Maximum Subarray Sum in optimal way" border="0" data-original-height="462" data-original-width="1004" height="147" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlbNwrnIwqh9h7Xd8y2XzO7CJbU706pETbbRFgKbE1Fd03i48kZyJyE9mA3cvM9o0ij6yhT6kC8JektCN9wKXODO0zVdqYv8uitPvdoSfDFR3Xp1DuBFDnUdWokNHMdXsVf92766d1iKU/s320/Screen+Shot+2018-07-17+at+5.31.24+AM.png" title="How to get Maximum Subarray Sum in optimal way" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<b>Solution:</b><br />
<br />
<ul style="text-align: left;">
<li>Define each 2 variables for sum, start index and for end index. </li>
<li>1st sum and index points will hold each block of sum until its values <= 0. </li>
<li>If any negative value comes in iteration then compare the 1st sum with 2nd (which holds the maximum subarray sum) sum and copy if its greater. </li>
<li>Iterate until array end and get the maximum subarray sum with the complexity of O(N)</li>
</ul>
<br />
<br />
If there are any better solution please post it under below comments section and sharing makes better.</div>
<div>
<br /></div>
<div>
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #008800;">public</span> <span style="color: #008800;">class</span> <span style="color: #bb0066;">SubArray</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">public</span> <span style="color: #008800;">static</span> <span style="color: #333399;">void</span> <span style="color: #0066bb;">main</span><span style="color: #333333;">(</span>String<span style="color: #333333;">[]</span> args<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #333399;">int</span> array<span style="color: #333333;">[]</span> <span style="color: #333333;">=</span> <span style="color: #008800;">new</span> <span style="color: #333399;">int</span><span style="color: #333333;">[]</span> <span style="color: #333333;">{</span> <span style="color: #333333;">-</span><span style="color: #0000dd;">2</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">5</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">4</span><span style="color: #333333;">,</span> <span style="color: #333333;">-</span><span style="color: #0000dd;">3</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">6</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">9</span><span style="color: #333333;">,</span> <span style="color: #333333;">-</span><span style="color: #0000dd;">1</span> <span style="color: #333333;">};</span>
SubArray obj <span style="color: #333333;">=</span> <span style="color: #008800;">new</span> SubArray<span style="color: #333333;">();</span>
obj<span style="color: #333333;">.</span><span style="color: #0000cc;">getMaximumSumSubArray</span><span style="color: #333333;">(</span>array<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">public</span> <span style="color: #333399;">void</span> <span style="color: #0066bb;">getMaximumSumSubArray</span><span style="color: #333333;">(</span><span style="color: #333399;">int</span><span style="color: #333333;">[]</span> array<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #333399;">int</span> start <span style="color: #333333;">=</span> <span style="color: #0000dd;">0</span><span style="color: #333333;">,</span> end <span style="color: #333333;">=</span> <span style="color: #0000dd;">0</span><span style="color: #333333;">,</span> sum <span style="color: #333333;">=</span> <span style="color: #0000dd;">0</span><span style="color: #333333;">,</span> finalSum <span style="color: #333333;">=</span> <span style="color: #0000dd;">0</span><span style="color: #333333;">,</span> fStart <span style="color: #333333;">=</span> <span style="color: #0000dd;">0</span><span style="color: #333333;">,</span> fEnd <span style="color: #333333;">=</span> <span style="color: #0000dd;">0</span><span style="color: #333333;">;</span>
<span style="color: #008800;">for</span> <span style="color: #333333;">(</span><span style="color: #333399;">int</span> i <span style="color: #333333;">=</span> <span style="color: #0000dd;">0</span><span style="color: #333333;">;</span> i <span style="color: #333333;"><</span> array<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">;</span> i<span style="color: #333333;">++)</span> <span style="color: #333333;">{</span>
<span style="color: #888888;">// Avoid initial array with negative</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>array<span style="color: #333333;">[</span>i<span style="color: #333333;">]</span> <span style="color: #333333;">></span> <span style="color: #0000dd;">0</span> <span style="color: #333333;">&&</span> sum <span style="color: #333333;">==</span> <span style="color: #0000dd;">0</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
start <span style="color: #333333;">=</span> end <span style="color: #333333;">=</span> i<span style="color: #333333;">;</span>
sum <span style="color: #333333;">=</span> array<span style="color: #333333;">[</span>i<span style="color: #333333;">];</span>
<span style="color: #888888;">// Add current value with sum</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #008800;">if</span> <span style="color: #333333;">(</span>array<span style="color: #333333;">[</span>i<span style="color: #333333;">]</span> <span style="color: #333333;">></span> <span style="color: #0000dd;">0</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
end <span style="color: #333333;">=</span> i<span style="color: #333333;">;</span>
sum <span style="color: #333333;">+=</span> array<span style="color: #333333;">[</span>i<span style="color: #333333;">];</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #333333;">{</span>
<span style="color: #888888;">// Copy sum to finalSum if sum > finalSum</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>sum <span style="color: #333333;">></span> finalSum<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
finalSum <span style="color: #333333;">=</span> sum<span style="color: #333333;">;</span>
fStart <span style="color: #333333;">=</span> start<span style="color: #333333;">;</span>
fEnd <span style="color: #333333;">=</span> end<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #888888;">// If sum + current <= 0 then start new sum</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">((</span>array<span style="color: #333333;">[</span>i<span style="color: #333333;">]</span> <span style="color: #333333;">+</span> sum<span style="color: #333333;">)</span> <span style="color: #333333;"><=</span> <span style="color: #0000dd;">0</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
sum <span style="color: #333333;">=</span> <span style="color: #0000dd;">0</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #333333;">{</span>
sum <span style="color: #333333;">+=</span> array<span style="color: #333333;">[</span>i<span style="color: #333333;">];</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #888888;">// Last compare, sum and finalSum</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>sum <span style="color: #333333;">></span> finalSum<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
finalSum <span style="color: #333333;">=</span> sum<span style="color: #333333;">;</span>
fStart <span style="color: #333333;">=</span> start<span style="color: #333333;">;</span>
fEnd <span style="color: #333333;">=</span> end<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"Sum : "</span> <span style="color: #333333;">+</span> finalSum<span style="color: #333333;">);</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"Start Index : "</span> <span style="color: #333333;">+</span> fStart<span style="color: #333333;">);</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"End Index : "</span> <span style="color: #333333;">+</span> fEnd<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
</pre>
</div>
</div>
<div>
<br /></div>
<div>
<b>OUPUT</b>:</div>
<div>
<br /></div>
<div>
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;">Sum <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">21</span>
Start Index <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">1</span>
End Index <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">5</span>
</pre>
</div>
</div>
</div>
Java Discoverhttp://www.blogger.com/profile/18049511268651382259noreply@blogger.comtag:blogger.com,1999:blog-6801225484322010450.post-52272944794815778032018-07-17T00:47:00.000+05:302018-07-17T00:47:02.991+05:30Simple, how to get only left child in BST<div dir="ltr" style="text-align: left;" trbidi="on">
As same as traversals like inorder, preorder, postorder and level order we need to traverse to BST and need to print only the left child of each nodes in Binary Search Tree.<br />
From below example we need to get only the nodes including root nodlike 11, 6, 4, 17, 31<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRki0R0-roECX5M6_U3G-cSxhj1NR37gO4Ybvd2z2203eid0t3pzDV70cZankJhn9PDOQzUjmGkmTnzyolKFWo3rKlFLGZQwvjPMDUvvKodq0WHHynkcOCOzttunPkQ9gDR-xO41BoSgw/s1600/Left+Nodes.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Simple, how to get only left child in BST" border="0" data-original-height="237" data-original-width="416" height="182" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRki0R0-roECX5M6_U3G-cSxhj1NR37gO4Ybvd2z2203eid0t3pzDV70cZankJhn9PDOQzUjmGkmTnzyolKFWo3rKlFLGZQwvjPMDUvvKodq0WHHynkcOCOzttunPkQ9gDR-xO41BoSgw/s320/Left+Nodes.png" title="Simple, how to get only left child in BST" width="320" /></a></div>
<b>Solution:</b><br />
<ul style="background-color: white; color: #6a6a6a; font-family: "Open Sans", sans-serif; font-size: 15px; margin: 0px 0px 0px 25px; padding: 10px 0px 20px;">
<li style="list-style-type: square; margin: 0px; padding: 0px 0px 5px;">Place the root node in Queue.</li>
<li style="list-style-type: square; margin: 0px; padding: 0px 0px 5px;">Iterate Queue until queue becomes empty. </li>
<li style="list-style-type: square; margin: 0px; padding: 0px 0px 5px;">Next Enqueue the child nodes left and right nodes inside same queue and print only the left node values. </li>
<li style="list-style-type: square; margin: 0px; padding: 0px 0px 5px;">Repeat the process for each leaf node.</li>
</ul>
<div>
<span style="color: #6a6a6a; font-family: "open sans" , sans-serif;"><span style="font-size: 15px;">
<!-- HTML generated using hilite.me --></span></span><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #6a6a6a; font-family: "open sans" , sans-serif;"><span style="font-size: 15px;"><span style="color: #008800;">class</span> <span style="color: #bb0066;">Node</span> <span style="color: #333333;">{</span>
Node left<span style="color: #333333;">,</span> right<span style="color: #333333;">;</span>
<span style="color: #333399;">int</span> data<span style="color: #333333;">;</span>
<span style="color: #008800;">public</span> <span style="color: #0066bb;">Node</span><span style="color: #333333;">(</span><span style="color: #333399;">int</span> data<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">this</span><span style="color: #333333;">.</span><span style="color: #0000cc;">data</span> <span style="color: #333333;">=</span> data<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">public</span> <span style="color: #008800;">class</span> <span style="color: #bb0066;">LeftNodes</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">public</span> <span style="color: #008800;">static</span> <span style="color: #333399;">void</span> <span style="color: #0066bb;">main</span><span style="color: #333333;">(</span>String<span style="color: #333333;">[]</span> args<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #333399;">int</span> a<span style="color: #333333;">[]</span> <span style="color: #333333;">=</span> <span style="color: #333333;">{</span> <span style="color: #0000dd;">4</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">5</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">3</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">8</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">7</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">6</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">100</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">9</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">3</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">2</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">1</span> <span style="color: #333333;">};</span>
Node root <span style="color: #333333;">=</span> <span style="color: #008800;">null</span><span style="color: #333333;">;</span>
LeftNodes tree <span style="color: #333333;">=</span> <span style="color: #008800;">new</span> LeftNodes<span style="color: #333333;">();</span>
<span style="color: #008800;">for</span> <span style="color: #333333;">(</span><span style="color: #333399;">int</span> i <span style="color: #333333;">=</span> <span style="color: #0000dd;">0</span><span style="color: #333333;">;</span> i <span style="color: #333333;"><</span> a<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">;</span> i<span style="color: #333333;">++)</span> <span style="color: #333333;">{</span>
root <span style="color: #333333;">=</span> tree<span style="color: #333333;">.</span><span style="color: #0000cc;">insertNode</span><span style="color: #333333;">(</span>root<span style="color: #333333;">,</span> a<span style="color: #333333;">[</span>i<span style="color: #333333;">]);</span>
<span style="color: #333333;">}</span>
tree<span style="color: #333333;">.</span><span style="color: #0000cc;">printLeftNodes</span><span style="color: #333333;">(</span>root<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">public</span> <span style="color: #333399;">void</span> <span style="color: #0066bb;">printLeftNodes</span><span style="color: #333333;">(</span>Node root<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>root <span style="color: #333333;">==</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span>
<span style="color: #008800;">return</span><span style="color: #333333;">;</span>
Queue<span style="color: #333333;"><</span>Node<span style="color: #333333;">></span> queue <span style="color: #333333;">=</span> <span style="color: #008800;">new</span> LinkedList<span style="color: #333333;"><</span>Node<span style="color: #333333;">>();</span>
queue<span style="color: #333333;">.</span><span style="color: #0000cc;">add</span><span style="color: #333333;">(</span>root<span style="color: #333333;">);</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span>root<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span><span style="color: #333333;">);</span>
<span style="color: #008800;">while</span> <span style="color: #333333;">(</span>queue<span style="color: #333333;">.</span><span style="color: #0000cc;">size</span><span style="color: #333333;">()</span> <span style="color: #333333;">></span> <span style="color: #0000dd;">0</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
Node current <span style="color: #333333;">=</span> queue<span style="color: #333333;">.</span><span style="color: #0000cc;">poll</span><span style="color: #333333;">();</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>current<span style="color: #333333;">.</span><span style="color: #0000cc;">left</span> <span style="color: #333333;">!=</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span>current<span style="color: #333333;">.</span><span style="color: #0000cc;">left</span><span style="color: #333333;">.</span><span style="color: #0000cc;">data</span><span style="color: #333333;">);</span>
queue<span style="color: #333333;">.</span><span style="color: #0000cc;">add</span><span style="color: #333333;">(</span>current<span style="color: #333333;">.</span><span style="color: #0000cc;">left</span><span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>current<span style="color: #333333;">.</span><span style="color: #0000cc;">right</span> <span style="color: #333333;">!=</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
queue<span style="color: #333333;">.</span><span style="color: #0000cc;">add</span><span style="color: #333333;">(</span>current<span style="color: #333333;">.</span><span style="color: #0000cc;">right</span><span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">public</span> Node <span style="color: #0066bb;">insertNode</span><span style="color: #333333;">(</span>Node root<span style="color: #333333;">,</span> <span style="color: #333399;">int</span> data<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
Node currentNode <span style="color: #333333;">=</span> <span style="color: #008800;">new</span> Node<span style="color: #333333;">(</span>data<span style="color: #333333;">);</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>root <span style="color: #333333;">==</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
root <span style="color: #333333;">=</span> currentNode<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #333333;">{</span>
insertData<span style="color: #333333;">(</span>currentNode<span style="color: #333333;">,</span> root<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">return</span> root<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">public</span> Node <span style="color: #0066bb;">insertData</span><span style="color: #333333;">(</span>Node newNode<span style="color: #333333;">,</span> Node root<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>root<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span> <span style="color: #333333;"><</span> newNode<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>root<span style="color: #333333;">.</span><span style="color: #0000cc;">right</span> <span style="color: #333333;">==</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
root<span style="color: #333333;">.</span><span style="color: #0000cc;">right</span> <span style="color: #333333;">=</span> newNode<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">return</span> <span style="color: #0066bb;">insertData</span><span style="color: #333333;">(</span>newNode<span style="color: #333333;">,</span> root<span style="color: #333333;">.</span><span style="color: #0000cc;">right</span><span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #008800;">if</span> <span style="color: #333333;">(</span>root<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span> <span style="color: #333333;">></span> newNode<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>root<span style="color: #333333;">.</span><span style="color: #0000cc;">left</span> <span style="color: #333333;">==</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
root<span style="color: #333333;">.</span><span style="color: #0000cc;">left</span> <span style="color: #333333;">=</span> newNode<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">return</span> <span style="color: #0066bb;">insertData</span><span style="color: #333333;">(</span>newNode<span style="color: #333333;">,</span> root<span style="color: #333333;">.</span><span style="color: #0000cc;">left</span><span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">return</span> root<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
</span></span></pre>
</div>
<span style="color: #6a6a6a; font-family: "open sans" , sans-serif;"><span style="font-size: 15px;">
</span></span></div>
<div>
<span style="color: #6a6a6a; font-family: "open sans" , sans-serif;"><span style="font-size: 15px;"><br /></span></span></div>
<div>
<span style="color: #6a6a6a; font-family: "open sans" , sans-serif;"><span style="font-size: 15px;">OUTPUT:</span></span></div>
<div>
<span style="color: #6a6a6a; font-family: "open sans" , sans-serif;"><span style="font-size: 15px;"><br /></span></span></div>
<div>
<span style="color: #6a6a6a; font-family: "open sans" , sans-serif;"><span style="font-size: 15px;">
<!-- HTML generated using hilite.me --></span></span><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #6a6a6a; font-family: "open sans" , sans-serif;"><span style="font-size: 15px;"><span style="color: #0000dd; font-weight: bold;">4</span>
<span style="color: #0000dd; font-weight: bold;">3</span>
<span style="color: #0000dd; font-weight: bold;">2</span>
<span style="color: #0000dd; font-weight: bold;">1</span>
<span style="color: #0000dd; font-weight: bold;">7</span>
<span style="color: #0000dd; font-weight: bold;">6</span>
<span style="color: #0000dd; font-weight: bold;">9</span>
</span></span></pre>
</div>
<span style="color: #6a6a6a; font-family: "open sans" , sans-serif;"><span style="font-size: 15px;">
</span></span></div>
</div>
Java Discoverhttp://www.blogger.com/profile/18049511268651382259noreply@blogger.comtag:blogger.com,1999:blog-6801225484322010450.post-74797210808661927322018-07-16T12:24:00.000+05:302018-07-16T12:40:10.816+05:30How to do Level order traversal in Binary Search Tree<div dir="ltr" style="text-align: left;" trbidi="on">
We have see lot of tutorials based on <a href="https://javadiscover.blogspot.com/search?q=binary+tree" target="_blank">Binary tree</a> and also other traversals like <a href="https://javadiscover.blogspot.com/2016/12/create-binary-tree-preorder-inorder-and.html" target="_blank">Inorder, Preorder and Postorder</a> etc.,<br />
<br />
Now in this tutorial lets see how to do Level order traversal of Binary Search Tree using Queue. From the given below tree we need to get output as F, D, J, B, E, G, K, A, C I, H<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmH3sWA9WHoWuaRKqNf8G9mynpiojqYrr0TP06pMmoF6cXMttJK4RJr5ZF6U9MVcOkkgHUNIWsmVZo7TAhNShviOjsD1r8T-LChTQ183O-6K2MYSoqn8mXKOSKLqymtQWjO1fAC2akxpE/s1600/Level+order+traversal.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="How to do Level order traversal in Binary Search Tree" border="0" data-original-height="942" data-original-width="1206" height="248" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmH3sWA9WHoWuaRKqNf8G9mynpiojqYrr0TP06pMmoF6cXMttJK4RJr5ZF6U9MVcOkkgHUNIWsmVZo7TAhNShviOjsD1r8T-LChTQ183O-6K2MYSoqn8mXKOSKLqymtQWjO1fAC2akxpE/s320/Level+order+traversal.png" title="How to do Level order traversal in Binary Search Tree" width="320" /></a></div>
<br />
<!-- HTML generated using hilite.me --><b>Solution:</b><br />
<ul style="text-align: left;">
<li>Place the root node in Queue.</li>
<li>Iterate Queue until queue becomes empty. Dequeue the first node from Queue and print the value of that node.</li>
<li>Next Enqueue the child nodes left and right nodes inside same queue. </li>
<li>Repeat the process until each leaf node. </li>
</ul>
Here in above example first we need to place 'F' node inside queue. Next in loop we need to print 'F' and get the child nodes 'D' and 'J' and enqueue inside same queue. Repeat the process until all leaf nodes and when Queue becomes empty.<br />
<br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #008800;">class</span> <span style="color: #bb0066;">Node</span> <span style="color: #333333;">{</span>
Node left<span style="color: #333333;">,</span> right<span style="color: #333333;">;</span>
<span style="color: #333399;">int</span> data<span style="color: #333333;">;</span>
<span style="color: #008800;">public</span> <span style="color: #0066bb;">Node</span><span style="color: #333333;">(</span><span style="color: #333399;">int</span> data<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">this</span><span style="color: #333333;">.</span><span style="color: #0000cc;">data</span> <span style="color: #333333;">=</span> data<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">public</span> <span style="color: #008800;">class</span> <span style="color: #bb0066;">LevelOrderTraversal</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">public</span> <span style="color: #008800;">static</span> <span style="color: #333399;">void</span> <span style="color: #0066bb;">main</span><span style="color: #333333;">(</span>String<span style="color: #333333;">[]</span> args<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #333399;">int</span> a<span style="color: #333333;">[]</span> <span style="color: #333333;">=</span> <span style="color: #333333;">{</span> <span style="color: #0000dd;">11</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">6</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">19</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">4</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">8</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">5</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">43</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">49</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">10</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">31</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">17</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">5</span> <span style="color: #333333;">};</span>
Node root <span style="color: #333333;">=</span> <span style="color: #008800;">null</span><span style="color: #333333;">;</span>
LevelOrderTraversal tree <span style="color: #333333;">=</span> <span style="color: #008800;">new</span> LevelOrderTraversal<span style="color: #333333;">();</span>
<span style="color: #008800;">for</span> <span style="color: #333333;">(</span><span style="color: #333399;">int</span> i <span style="color: #333333;">=</span> <span style="color: #0000dd;">0</span><span style="color: #333333;">;</span> i <span style="color: #333333;"><</span> a<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">;</span> i<span style="color: #333333;">++)</span> <span style="color: #333333;">{</span>
root <span style="color: #333333;">=</span> tree<span style="color: #333333;">.</span><span style="color: #0000cc;">insertNode</span><span style="color: #333333;">(</span>root<span style="color: #333333;">,</span> a<span style="color: #333333;">[</span>i<span style="color: #333333;">]);</span>
<span style="color: #333333;">}</span>
tree<span style="color: #333333;">.</span><span style="color: #0000cc;">levelOrderTraversal</span><span style="color: #333333;">(</span>root<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">public</span> <span style="color: #333399;">void</span> <span style="color: #0066bb;">levelOrderTraversal</span><span style="color: #333333;">(</span>Node root<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>root <span style="color: #333333;">==</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span>
<span style="color: #008800;">return</span><span style="color: #333333;">;</span>
Queue<span style="color: #333333;"><</span>Node<span style="color: #333333;">></span> queue <span style="color: #333333;">=</span> <span style="color: #008800;">new</span> LinkedList<span style="color: #333333;"><</span>Node<span style="color: #333333;">>();</span>
queue<span style="color: #333333;">.</span><span style="color: #0000cc;">add</span><span style="color: #333333;">(</span>root<span style="color: #333333;">);</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span>root<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span><span style="color: #333333;">);</span>
<span style="color: #008800;">while</span> <span style="color: #333333;">(</span>queue<span style="color: #333333;">.</span><span style="color: #0000cc;">size</span><span style="color: #333333;">()</span> <span style="color: #333333;">></span> <span style="color: #0000dd;">0</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
Node current <span style="color: #333333;">=</span> queue<span style="color: #333333;">.</span><span style="color: #0000cc;">poll</span><span style="color: #333333;">();</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>current<span style="color: #333333;">.</span><span style="color: #0000cc;">left</span> <span style="color: #333333;">!=</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span>current<span style="color: #333333;">.</span><span style="color: #0000cc;">left</span><span style="color: #333333;">.</span><span style="color: #0000cc;">data</span><span style="color: #333333;">);</span>
queue<span style="color: #333333;">.</span><span style="color: #0000cc;">add</span><span style="color: #333333;">(</span>current<span style="color: #333333;">.</span><span style="color: #0000cc;">left</span><span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>current<span style="color: #333333;">.</span><span style="color: #0000cc;">right</span> <span style="color: #333333;">!=</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span>current<span style="color: #333333;">.</span><span style="color: #0000cc;">right</span><span style="color: #333333;">.</span><span style="color: #0000cc;">data</span><span style="color: #333333;">);</span>
queue<span style="color: #333333;">.</span><span style="color: #0000cc;">add</span><span style="color: #333333;">(</span>current<span style="color: #333333;">.</span><span style="color: #0000cc;">right</span><span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">public</span> Node <span style="color: #0066bb;">insertNode</span><span style="color: #333333;">(</span>Node root<span style="color: #333333;">,</span> <span style="color: #333399;">int</span> data<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
Node currentNode <span style="color: #333333;">=</span> <span style="color: #008800;">new</span> Node<span style="color: #333333;">(</span>data<span style="color: #333333;">);</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>root <span style="color: #333333;">==</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
root <span style="color: #333333;">=</span> currentNode<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #333333;">{</span>
insertData<span style="color: #333333;">(</span>currentNode<span style="color: #333333;">,</span> root<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">return</span> root<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">public</span> Node <span style="color: #0066bb;">insertData</span><span style="color: #333333;">(</span>Node newNode<span style="color: #333333;">,</span> Node root<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>root<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span> <span style="color: #333333;"><</span> newNode<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>root<span style="color: #333333;">.</span><span style="color: #0000cc;">right</span> <span style="color: #333333;">==</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
root<span style="color: #333333;">.</span><span style="color: #0000cc;">right</span> <span style="color: #333333;">=</span> newNode<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">return</span> <span style="color: #0066bb;">insertData</span><span style="color: #333333;">(</span>newNode<span style="color: #333333;">,</span> root<span style="color: #333333;">.</span><span style="color: #0000cc;">right</span><span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #008800;">if</span> <span style="color: #333333;">(</span>root<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span> <span style="color: #333333;">></span> newNode<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>root<span style="color: #333333;">.</span><span style="color: #0000cc;">left</span> <span style="color: #333333;">==</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
root<span style="color: #333333;">.</span><span style="color: #0000cc;">left</span> <span style="color: #333333;">=</span> newNode<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">return</span> <span style="color: #0066bb;">insertData</span><span style="color: #333333;">(</span>newNode<span style="color: #333333;">,</span> root<span style="color: #333333;">.</span><span style="color: #0000cc;">left</span><span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">return</span> root<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
</pre>
</div>
<br />
<br />
<b>OUTPUT</b>:<br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #0000dd; font-weight: bold;">11</span>
<span style="color: #0000dd; font-weight: bold;">6</span>
<span style="color: #0000dd; font-weight: bold;">19</span>
<span style="color: #0000dd; font-weight: bold;">4</span>
<span style="color: #0000dd; font-weight: bold;">8</span>
<span style="color: #0000dd; font-weight: bold;">17</span>
<span style="color: #0000dd; font-weight: bold;">43</span>
<span style="color: #0000dd; font-weight: bold;">5</span>
<span style="color: #0000dd; font-weight: bold;">10</span>
<span style="color: #0000dd; font-weight: bold;">31</span>
<span style="color: #0000dd; font-weight: bold;">49</span>
</pre>
</div>
<br />
<div>
<br /></div>
</div>
Java Discoverhttp://www.blogger.com/profile/18049511268651382259noreply@blogger.comtag:blogger.com,1999:blog-6801225484322010450.post-59108892668916057342018-07-12T15:21:00.001+05:302018-07-12T15:21:31.692+05:30How to get height of BST using recursive way<div dir="ltr" style="text-align: left;" trbidi="on">
The height of a Binary Search Tree is the length of the longest downward path to a leaf from root node. This is commonly needed in the manipulation of the various self-balancing trees, AVL Trees in particular. The root node has depth zero, leaf nodes have height zero, and a tree with only a single node (hence both a root and leaf) has depth and height zero. Conventionally, an empty tree (tree with no nodes, if such are allowed) has height −1.<br />
In below example the height of the tree is 5, i.e., from root(10) which goes to 3 -> 5 -> 7 -> 8 -> 9. So maximum height of the tree is 5<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRacnU5qJ0WpcQEmY484KcJiIxAhd_EBv6dXY4syYrBx5sKSC4yE9dZPVuUWfRXXzWtTmjsUPtjl4fg-dgtSm4Qbj2n8OvxE_isqAW0kmyN-yg3Lpxg-14v2P7rJ-CKaLn_gwRHj3I54I/s1600/Screen+Shot+2018-07-12+at+3.13.42+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="How to get height of BST using recursive way" border="0" data-original-height="830" data-original-width="814" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRacnU5qJ0WpcQEmY484KcJiIxAhd_EBv6dXY4syYrBx5sKSC4yE9dZPVuUWfRXXzWtTmjsUPtjl4fg-dgtSm4Qbj2n8OvxE_isqAW0kmyN-yg3Lpxg-14v2P7rJ-CKaLn_gwRHj3I54I/s320/Screen+Shot+2018-07-12+at+3.13.42+PM.png" title="How to get height of BST using recursive way" width="312" /></a></div>
<br />
<br />
Lets see simple Java code to get the height of a BST tree using recursion.<br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #008800;">class</span> <span style="color: #bb0066;">Node</span> <span style="color: #333333;">{</span>
Node left<span style="color: #333333;">,</span> right<span style="color: #333333;">;</span>
<span style="color: #333399;">int</span> data<span style="color: #333333;">;</span>
<span style="color: #008800;">public</span> <span style="color: #0066bb;">Node</span><span style="color: #333333;">(</span><span style="color: #333399;">int</span> data<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">this</span><span style="color: #333333;">.</span><span style="color: #0000cc;">data</span> <span style="color: #333333;">=</span> data<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">public</span> <span style="color: #008800;">class</span> <span style="color: #bb0066;">TreeHeight</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">public</span> <span style="color: #008800;">static</span> <span style="color: #333399;">void</span> <span style="color: #0066bb;">main</span><span style="color: #333333;">(</span>String<span style="color: #333333;">[]</span> args<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #333399;">int</span> a<span style="color: #333333;">[]</span> <span style="color: #333333;">=</span> <span style="color: #333333;">{</span> <span style="color: #0000dd;">1</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">2</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">3</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">4</span><span style="color: #333333;">,</span> <span style="color: #333333;">-</span><span style="color: #0000dd;">1</span><span style="color: #333333;">,</span> <span style="color: #333333;">-</span><span style="color: #0000dd;">2</span><span style="color: #333333;">,</span> <span style="color: #333333;">-</span><span style="color: #0000dd;">3</span><span style="color: #333333;">,</span> <span style="color: #333333;">-</span><span style="color: #0000dd;">4</span><span style="color: #333333;">,</span> <span style="color: #333333;">-</span><span style="color: #0000dd;">5</span> <span style="color: #333333;">};</span>
<span style="color: #888888;">//int a[] = { 10,3,15,2,5,19,7,8,9,20,1 };</span>
Node root <span style="color: #333333;">=</span> <span style="color: #008800;">null</span><span style="color: #333333;">;</span>
TreeHeight tree <span style="color: #333333;">=</span> <span style="color: #008800;">new</span> TreeHeight<span style="color: #333333;">();</span>
<span style="color: #008800;">for</span> <span style="color: #333333;">(</span><span style="color: #333399;">int</span> i <span style="color: #333333;">=</span> <span style="color: #0000dd;">0</span><span style="color: #333333;">;</span> i <span style="color: #333333;"><</span> a<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">;</span> i<span style="color: #333333;">++)</span> <span style="color: #333333;">{</span>
root <span style="color: #333333;">=</span> tree<span style="color: #333333;">.</span><span style="color: #0000cc;">insertNode</span><span style="color: #333333;">(</span>root<span style="color: #333333;">,</span> a<span style="color: #333333;">[</span>i<span style="color: #333333;">]);</span>
<span style="color: #333333;">}</span>
<span style="color: #333399;">int</span> height <span style="color: #333333;">=</span> tree<span style="color: #333333;">.</span><span style="color: #0000cc;">getBSTHeight</span><span style="color: #333333;">(</span>root<span style="color: #333333;">);</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"Binary Tree maximum height : "</span> <span style="color: #333333;">+</span> height<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">public</span> <span style="color: #333399;">int</span> <span style="color: #0066bb;">getBSTHeight</span><span style="color: #333333;">(</span>Node node<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>node <span style="color: #333333;">!=</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span>
<span style="color: #008800;">return</span> Math<span style="color: #333333;">.</span><span style="color: #0000cc;">max</span><span style="color: #333333;">(</span>getBSTHeight<span style="color: #333333;">(</span>node<span style="color: #333333;">.</span><span style="color: #0000cc;">left</span><span style="color: #333333;">),</span> </pre>
<pre style="line-height: 125%; margin: 0;"> getBSTHeight<span style="color: #333333;">(</span>node<span style="color: #333333;">.</span><span style="color: #0000cc;">right</span><span style="color: #333333;">))</span> <span style="color: #333333;">+</span> <span style="color: #0000dd;">1</span><span style="color: #333333;">;</span>
<span style="color: #008800;">else</span>
<span style="color: #008800;">return</span> <span style="color: #333333;">-</span><span style="color: #0000dd;">1</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">public</span> Node <span style="color: #0066bb;">insertNode</span><span style="color: #333333;">(</span>Node root<span style="color: #333333;">,</span> <span style="color: #333399;">int</span> data<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
Node currentNode <span style="color: #333333;">=</span> <span style="color: #008800;">new</span> Node<span style="color: #333333;">(</span>data<span style="color: #333333;">);</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>root <span style="color: #333333;">==</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
root <span style="color: #333333;">=</span> currentNode<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #333333;">{</span>
insertData<span style="color: #333333;">(</span>currentNode<span style="color: #333333;">,</span> root<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">return</span> root<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">public</span> Node <span style="color: #0066bb;">insertData</span><span style="color: #333333;">(</span>Node newNode<span style="color: #333333;">,</span> Node root<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>root<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span> <span style="color: #333333;"><</span> newNode<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>root<span style="color: #333333;">.</span><span style="color: #0000cc;">right</span> <span style="color: #333333;">==</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
root<span style="color: #333333;">.</span><span style="color: #0000cc;">right</span> <span style="color: #333333;">=</span> newNode<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">return</span> <span style="color: #0066bb;">insertData</span><span style="color: #333333;">(</span>newNode<span style="color: #333333;">,</span> root<span style="color: #333333;">.</span><span style="color: #0000cc;">right</span><span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #008800;">if</span> <span style="color: #333333;">(</span>root<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span> <span style="color: #333333;">></span> newNode<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>root<span style="color: #333333;">.</span><span style="color: #0000cc;">left</span> <span style="color: #333333;">==</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
root<span style="color: #333333;">.</span><span style="color: #0000cc;">left</span> <span style="color: #333333;">=</span> newNode<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">return</span> <span style="color: #0066bb;">insertData</span><span style="color: #333333;">(</span>newNode<span style="color: #333333;">,</span> root<span style="color: #333333;">.</span><span style="color: #0000cc;">left</span><span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">return</span> root<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
</pre>
</div>
<br />
<br />
<b>OUTPUT:</b><br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;">Binary Tree maximum height <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">5</span>
</pre>
</div>
</div>
Java Discoverhttp://www.blogger.com/profile/18049511268651382259noreply@blogger.comtag:blogger.com,1999:blog-6801225484322010450.post-73396748423215893652018-07-09T13:07:00.000+05:302018-07-09T13:07:07.101+05:30Counting nodes in a tree? Yes how to get Binary Tree size <div dir="ltr" style="text-align: left;" trbidi="on">
Counting nodes in a tree? Yes how to get Binary Tree size nothing but counting all the nodes in a Binary Tree. For example the size of the below binary tree is 11<span id="goog_559029520"></span><span id="goog_559029521"></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjudzPLYPdsxAqDpgSMIhFBHv_-PuhNV116a5q7K-mwWFV0qhbmEuwtV7bO1_mouUciHe34fyoxrZQTmYbQpFScfg2wujzSXgjq2rW2KGcwR3u3FhvztmxjPQMUf-1kYHTErw6DFBPpUaA/s1600/BinaryTreeSize.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Counting nodes in a tree? Yes how to get Binary Tree size " border="0" data-original-height="424" data-original-width="762" height="177" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjudzPLYPdsxAqDpgSMIhFBHv_-PuhNV116a5q7K-mwWFV0qhbmEuwtV7bO1_mouUciHe34fyoxrZQTmYbQpFScfg2wujzSXgjq2rW2KGcwR3u3FhvztmxjPQMUf-1kYHTErw6DFBPpUaA/s320/BinaryTreeSize.png" title="Counting nodes in a tree? Yes how to get Binary Tree size " width="320" /></a></div>
<br />
Lets see simple Java code to create Binary Tree and to find the size of the tree as well.<br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #008800;">class</span> <span style="color: #bb0066;">Node</span> <span style="color: #333333;">{</span>
Node left<span style="color: #333333;">,</span> right<span style="color: #333333;">;</span>
<span style="color: #333399;">int</span> data<span style="color: #333333;">;</span>
<span style="color: #008800;">public</span> <span style="color: #0066bb;">Node</span><span style="color: #333333;">(</span><span style="color: #333399;">int</span> data<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">this</span><span style="color: #333333;">.</span><span style="color: #0000cc;">data</span> <span style="color: #333333;">=</span> data<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">public</span> <span style="color: #008800;">class</span> <span style="color: #bb0066;">BinaryTreeSize</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">public</span> <span style="color: #008800;">static</span> <span style="color: #333399;">void</span> <span style="color: #0066bb;">main</span><span style="color: #333333;">(</span>String<span style="color: #333333;">[]</span> args<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #333399;">int</span> a<span style="color: #333333;">[]</span> <span style="color: #333333;">=</span> <span style="color: #333333;">{</span> <span style="color: #0000dd;">11</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">6</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">19</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">4</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">8</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">17</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">43</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">5</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">10</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">31</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">49</span> <span style="color: #333333;">};</span>
Node root <span style="color: #333333;">=</span> <span style="color: #008800;">null</span><span style="color: #333333;">;</span>
BinaryTreeSize tree <span style="color: #333333;">=</span> <span style="color: #008800;">new</span> BinaryTreeSize<span style="color: #333333;">();</span>
<span style="color: #008800;">for</span> <span style="color: #333333;">(</span><span style="color: #333399;">int</span> i <span style="color: #333333;">=</span> <span style="color: #0000dd;">0</span><span style="color: #333333;">;</span> i <span style="color: #333333;"><</span> a<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">;</span> i<span style="color: #333333;">++)</span> <span style="color: #333333;">{</span>
root <span style="color: #333333;">=</span> tree<span style="color: #333333;">.</span><span style="color: #0000cc;">insertNode</span><span style="color: #333333;">(</span>root<span style="color: #333333;">,</span> a<span style="color: #333333;">[</span>i<span style="color: #333333;">]);</span>
<span style="color: #333333;">}</span>
<span style="color: #333399;">int</span> count <span style="color: #333333;">=</span> tree<span style="color: #333333;">.</span><span style="color: #0000cc;">binaryTreeSize</span><span style="color: #333333;">(</span>root<span style="color: #333333;">);</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"Binary Tree size : "</span> <span style="color: #333333;">+</span> count<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">public</span> <span style="color: #333399;">int</span> <span style="color: #0066bb;">binaryTreeSize</span><span style="color: #333333;">(</span>Node root<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">return</span> <span style="color: #0066bb;">nodeCount</span><span style="color: #333333;">(</span>root<span style="color: #333333;">,</span> <span style="color: #0000dd;">0</span><span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #888888;">/*</span>
<span style="color: #888888;"> * Getting binary tree size using recursive algorithm</span>
<span style="color: #888888;"> */</span>
<span style="color: #008800;">public</span> <span style="color: #333399;">int</span> <span style="color: #0066bb;">nodeCount</span><span style="color: #333333;">(</span>Node root<span style="color: #333333;">,</span> <span style="color: #333399;">int</span> val<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>root <span style="color: #333333;">!=</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
val<span style="color: #333333;">++;</span>
val <span style="color: #333333;">=</span> nodeCount<span style="color: #333333;">(</span>root<span style="color: #333333;">.</span><span style="color: #0000cc;">left</span><span style="color: #333333;">,</span> val<span style="color: #333333;">);</span>
val <span style="color: #333333;">=</span> nodeCount<span style="color: #333333;">(</span>root<span style="color: #333333;">.</span><span style="color: #0000cc;">right</span><span style="color: #333333;">,</span> val<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">return</span> val<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">public</span> Node <span style="color: #0066bb;">insertNode</span><span style="color: #333333;">(</span>Node root<span style="color: #333333;">,</span> <span style="color: #333399;">int</span> data<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
Node currentNode <span style="color: #333333;">=</span> <span style="color: #008800;">new</span> Node<span style="color: #333333;">(</span>data<span style="color: #333333;">);</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>root <span style="color: #333333;">==</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
root <span style="color: #333333;">=</span> currentNode<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #333333;">{</span>
insertData<span style="color: #333333;">(</span>currentNode<span style="color: #333333;">,</span> root<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">return</span> root<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">public</span> Node <span style="color: #0066bb;">insertData</span><span style="color: #333333;">(</span>Node newNode<span style="color: #333333;">,</span> Node root<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>root<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span> <span style="color: #333333;"><</span> newNode<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>root<span style="color: #333333;">.</span><span style="color: #0000cc;">right</span> <span style="color: #333333;">==</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
root<span style="color: #333333;">.</span><span style="color: #0000cc;">right</span> <span style="color: #333333;">=</span> newNode<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">return</span> <span style="color: #0066bb;">insertData</span><span style="color: #333333;">(</span>newNode<span style="color: #333333;">,</span> root<span style="color: #333333;">.</span><span style="color: #0000cc;">right</span><span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #008800;">if</span> <span style="color: #333333;">(</span>root<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span> <span style="color: #333333;">></span> newNode<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>root<span style="color: #333333;">.</span><span style="color: #0000cc;">left</span> <span style="color: #333333;">==</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
root<span style="color: #333333;">.</span><span style="color: #0000cc;">left</span> <span style="color: #333333;">=</span> newNode<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">return</span> <span style="color: #0066bb;">insertData</span><span style="color: #333333;">(</span>newNode<span style="color: #333333;">,</span> root<span style="color: #333333;">.</span><span style="color: #0000cc;">left</span><span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">return</span> root<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
</pre>
</div>
<br />
<br />
<b>OUTPUT:</b><br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;">Binary Tree size <span style="color: #333333;">:</span> <span style="color: #0000dd; font-weight: bold;">11</span>
</pre>
</div>
</div>
Java Discoverhttp://www.blogger.com/profile/18049511268651382259noreply@blogger.comtag:blogger.com,1999:blog-6801225484322010450.post-88390046434613545912018-07-09T11:07:00.001+05:302018-07-09T13:07:57.057+05:30How to do Iterative Postorder Traversal in BST<div dir="ltr" style="text-align: left;" trbidi="on">
Earlier we have seen lot of tutorials related to Binary Search Tree like<br />
<br />
<a href="https://javadiscover.blogspot.com/2018/06/find-diameter-of-binary-tree-using-java.html" target="_blank">How to find the diameter of a binary tree</a><br />
<a href="https://javadiscover.blogspot.com/2018/05/convert-binary-tree-into-its-mirror-tree.html" target="_blank">Converting a Binary Tree into its Mirror Tree</a><br />
<a href="https://javadiscover.blogspot.com/2018/06/inorder-predecessor-and-successor-of.html" target="_blank">Inorder Predecessor and Successor of Binary Search Tree</a><br />
<a href="https://javadiscover.blogspot.com/2018/06/print-all-leaf-nodes-of-binary-tree.html" target="_blank">How to find all leaf nodes in Binary Search Tree</a><br />
<br />
In this tutorial we will see how to do postorder traversal using iterative method instead of recrusive algorithm. We are going to use single stack to store nodes and applying our logic over it to get postorder traversal.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghdiR7zqbngYNxFwyfIFkDshvxvSNCU4sFc1nf8ns54cMIIe8r3ZW3i74rF3Z6L5Uh29V6Bn7QLsmJsIqaA4ed0LOJSHTC-gOxdG-rKwqFfdTWXgFXmAAVyb2BtEkxVbzfgWN80GBQ6pk/s1600/Binary_Tree.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="How to do Iterative Postorder Traversal in BST" border="0" data-original-height="340" data-original-width="443" height="246" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghdiR7zqbngYNxFwyfIFkDshvxvSNCU4sFc1nf8ns54cMIIe8r3ZW3i74rF3Z6L5Uh29V6Bn7QLsmJsIqaA4ed0LOJSHTC-gOxdG-rKwqFfdTWXgFXmAAVyb2BtEkxVbzfgWN80GBQ6pk/s320/Binary_Tree.png" title="How to do Iterative Postorder Traversal in BST" width="320" /></a></div>
Simple Java code to create Binary Search Tree and doing postorder traversal using iterative method.<br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #008800;">import</span> <span style="color: #0e84b5;">java.util.Stack</span><span style="color: #333333;">;</span>
<span style="color: #008800;">class</span> <span style="color: #bb0066;">Node</span> <span style="color: #333333;">{</span>
Node left<span style="color: #333333;">,</span> right<span style="color: #333333;">;</span>
<span style="color: #333399;">int</span> data<span style="color: #333333;">;</span>
<span style="color: #008800;">public</span> <span style="color: #0066bb;">Node</span><span style="color: #333333;">(</span><span style="color: #333399;">int</span> data<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">this</span><span style="color: #333333;">.</span><span style="color: #0000cc;">data</span> <span style="color: #333333;">=</span> data<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">public</span> <span style="color: #008800;">class</span> <span style="color: #bb0066;">PostOrderTraversal</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">public</span> <span style="color: #008800;">static</span> <span style="color: #333399;">void</span> <span style="color: #0066bb;">main</span><span style="color: #333333;">(</span>String<span style="color: #333333;">[]</span> args<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #333399;">int</span> a<span style="color: #333333;">[]</span> <span style="color: #333333;">=</span> <span style="color: #333333;">{</span> <span style="color: #0000dd;">4</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">5</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">8</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">100</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">3</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">2</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">9</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">1</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">7</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">6</span> <span style="color: #333333;">};</span>
Node root <span style="color: #333333;">=</span> <span style="color: #008800;">null</span><span style="color: #333333;">;</span>
PostOrderTraversal tree <span style="color: #333333;">=</span> <span style="color: #008800;">new</span> PostOrderTraversal<span style="color: #333333;">();</span>
<span style="color: #008800;">for</span> <span style="color: #333333;">(</span><span style="color: #333399;">int</span> i <span style="color: #333333;">=</span> <span style="color: #0000dd;">0</span><span style="color: #333333;">;</span> i <span style="color: #333333;"><</span> a<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">;</span> i<span style="color: #333333;">++)</span> <span style="color: #333333;">{</span>
root <span style="color: #333333;">=</span> tree<span style="color: #333333;">.</span><span style="color: #0000cc;">insertNode</span><span style="color: #333333;">(</span>root<span style="color: #333333;">,</span> a<span style="color: #333333;">[</span>i<span style="color: #333333;">]);</span>
<span style="color: #333333;">}</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"\n\nBy Stack : "</span><span style="color: #333333;">);</span>
tree<span style="color: #333333;">.</span><span style="color: #0000cc;">postOrderTraversal</span><span style="color: #333333;">(</span>root<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #888888;">/*</span>
<span style="color: #888888;"> * Postorder traversal using iteration and single stack</span>
<span style="color: #888888;"> */</span>
<span style="color: #008800;">public</span> <span style="color: #333399;">void</span> <span style="color: #0066bb;">postOrderTraversal</span><span style="color: #333333;">(</span>Node root<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #888888;">//Stack to store each node</span>
Stack<span style="color: #333333;"><</span>Node<span style="color: #333333;">></span> stack <span style="color: #333333;">=</span> <span style="color: #008800;">new</span> Stack<span style="color: #333333;"><</span>Node<span style="color: #333333;">>();</span>
<span style="color: #888888;">//Strong all left node from root into stack</span>
<span style="color: #008800;">while</span> <span style="color: #333333;">(</span>root <span style="color: #333333;">!=</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
stack<span style="color: #333333;">.</span><span style="color: #0000cc;">push</span><span style="color: #333333;">(</span>root<span style="color: #333333;">);</span>
root <span style="color: #333333;">=</span> root<span style="color: #333333;">.</span><span style="color: #0000cc;">left</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
Node node <span style="color: #333333;">=</span> <span style="color: #008800;">null</span><span style="color: #333333;">;</span>
<span style="color: #008800;">while</span> <span style="color: #333333;">(</span>stack<span style="color: #333333;">.</span><span style="color: #0000cc;">size</span><span style="color: #333333;">()</span> <span style="color: #333333;">></span> <span style="color: #0000dd;">0</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #888888;">// Boolean flag to check left and right nodes are visited or not</span>
<span style="color: #333399;">boolean</span> leftVisited <span style="color: #333333;">=</span> <span style="color: #008800;">false</span><span style="color: #333333;">,</span> rightVisited <span style="color: #333333;">=</span> <span style="color: #008800;">false</span><span style="color: #333333;">;</span>
<span style="color: #888888;">// Checking whether current node is equal to roots left node (1)</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>node <span style="color: #333333;">!=</span> <span style="color: #008800;">null</span> <span style="color: #333333;">&&</span> stack<span style="color: #333333;">.</span><span style="color: #0000cc;">peek</span><span style="color: #333333;">().</span><span style="color: #0000cc;">left</span> <span style="color: #333333;">==</span> node<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
leftVisited <span style="color: #333333;">=</span> <span style="color: #008800;">true</span><span style="color: #333333;">;</span>
<span style="color: #888888;">// Checking whether current node is equal to roots right node (2)</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #008800;">if</span> <span style="color: #333333;">(</span>node <span style="color: #333333;">!=</span> <span style="color: #008800;">null</span> <span style="color: #333333;">&&</span> stack<span style="color: #333333;">.</span><span style="color: #0000cc;">peek</span><span style="color: #333333;">().</span><span style="color: #0000cc;">right</span> <span style="color: #333333;">==</span> node<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
leftVisited <span style="color: #333333;">=</span> rightVisited <span style="color: #333333;">=</span> <span style="color: #008800;">true</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
node <span style="color: #333333;">=</span> stack<span style="color: #333333;">.</span><span style="color: #0000cc;">peek</span><span style="color: #333333;">();</span>
<span style="color: #888888;">// if above check (1) fails then push current nodes left node into stack</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>node<span style="color: #333333;">.</span><span style="color: #0000cc;">left</span> <span style="color: #333333;">!=</span> <span style="color: #008800;">null</span> <span style="color: #333333;">&&</span> <span style="color: #333333;">!</span>leftVisited<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
stack<span style="color: #333333;">.</span><span style="color: #0000cc;">push</span><span style="color: #333333;">(</span>node<span style="color: #333333;">.</span><span style="color: #0000cc;">left</span><span style="color: #333333;">);</span>
<span style="color: #888888;">// if above check (2) fails then push current nodes right node into stack</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #008800;">if</span> <span style="color: #333333;">(</span>node<span style="color: #333333;">.</span><span style="color: #0000cc;">right</span> <span style="color: #333333;">!=</span> <span style="color: #008800;">null</span> <span style="color: #333333;">&&</span> <span style="color: #333333;">!</span>rightVisited<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
stack<span style="color: #333333;">.</span><span style="color: #0000cc;">push</span><span style="color: #333333;">(</span>node<span style="color: #333333;">.</span><span style="color: #0000cc;">right</span><span style="color: #333333;">);</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #333333;">{</span>
node <span style="color: #333333;">=</span> stack<span style="color: #333333;">.</span><span style="color: #0000cc;">pop</span><span style="color: #333333;">();</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">print</span><span style="color: #333333;">(</span>node<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span> <span style="color: #333333;">+</span> <span style="background-color: #fff0f0;">", "</span><span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">public</span> Node <span style="color: #0066bb;">insertNode</span><span style="color: #333333;">(</span>Node root<span style="color: #333333;">,</span> <span style="color: #333399;">int</span> data<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
Node currentNode <span style="color: #333333;">=</span> <span style="color: #008800;">new</span> Node<span style="color: #333333;">(</span>data<span style="color: #333333;">);</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>root <span style="color: #333333;">==</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
root <span style="color: #333333;">=</span> currentNode<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #333333;">{</span>
insertData<span style="color: #333333;">(</span>currentNode<span style="color: #333333;">,</span> root<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">return</span> root<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">public</span> Node <span style="color: #0066bb;">insertData</span><span style="color: #333333;">(</span>Node newNode<span style="color: #333333;">,</span> Node root<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>root<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span> <span style="color: #333333;"><</span> newNode<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>root<span style="color: #333333;">.</span><span style="color: #0000cc;">right</span> <span style="color: #333333;">==</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
root<span style="color: #333333;">.</span><span style="color: #0000cc;">right</span> <span style="color: #333333;">=</span> newNode<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">return</span> <span style="color: #0066bb;">insertData</span><span style="color: #333333;">(</span>newNode<span style="color: #333333;">,</span> root<span style="color: #333333;">.</span><span style="color: #0000cc;">right</span><span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #008800;">if</span> <span style="color: #333333;">(</span>root<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span> <span style="color: #333333;">></span> newNode<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>root<span style="color: #333333;">.</span><span style="color: #0000cc;">left</span> <span style="color: #333333;">==</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
root<span style="color: #333333;">.</span><span style="color: #0000cc;">left</span> <span style="color: #333333;">=</span> newNode<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">return</span> <span style="color: #0066bb;">insertData</span><span style="color: #333333;">(</span>newNode<span style="color: #333333;">,</span> root<span style="color: #333333;">.</span><span style="color: #0000cc;">left</span><span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">return</span> root<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
</pre>
</div>
<br />
<br />
<b>OUTPUT</b>:<br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;">By Stack <span style="color: #333333;">:</span>
<span style="color: #0000dd; font-weight: bold;">1</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">2</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">3</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">6</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">7</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">9</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">100</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">8</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">5</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">4</span><span style="color: #333333;">,</span>
</pre>
</div>
</div>
Java Discoverhttp://www.blogger.com/profile/18049511268651382259noreply@blogger.comtag:blogger.com,1999:blog-6801225484322010450.post-58219195760143516192018-07-05T13:03:00.001+05:302018-07-05T13:04:39.207+05:30How to reverse a String without special characters <div dir="ltr" style="text-align: left;" trbidi="on">
Interesting and interview question that need to reverse only alphanumeric's from a given string by leaving all other special characters at same index position. Need to write a program with time complexity of O(N/2).<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgx0Kv_dJlWu_65RUhofxvdQAYhm4O8IsjI3u6ImgIl4xq28EoOj55NWxzCjzZgSGq6W4QL_liVUNCG-Eu5puR_Le1tMVzxJuMBK14FUq_PpHZ1ZMRagi2Zo_nPuL9JWmK-UQw2A1Na4_k/s1600/How+to+reverse+a+String+without+special+characters+.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="How to reverse a String without special characters " border="0" data-original-height="240" data-original-width="408" height="187" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgx0Kv_dJlWu_65RUhofxvdQAYhm4O8IsjI3u6ImgIl4xq28EoOj55NWxzCjzZgSGq6W4QL_liVUNCG-Eu5puR_Le1tMVzxJuMBK14FUq_PpHZ1ZMRagi2Zo_nPuL9JWmK-UQw2A1Na4_k/s320/How+to+reverse+a+String+without+special+characters+.png" title="How to reverse a String without special characters " width="320" /></a></div>
<br />
<b>Example:</b><br />
<br />
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #3933ff}
span.s1 {color: #7e504f}
span.s2 {color: #000000}
</style>
<br />
<div class="p1">
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #3933ff}
span.s1 {color: #7e504f}
span.s2 {color: #000000}
</style>
</div>
<div class="p1">
<span class="s1">str</span><span class="s2"> = </span>"#ABCD1234qwerty@"<span class="s2">;</span></div>
<div class="p1">
<span class="s2">Output : </span>*#ytrewq4321DCBA@</div>
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
</style>
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
</style>
<br />
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #3933ff}
span.s1 {color: #7e504f}
span.s2 {color: #000000}
</style>
<br />
<div class="p1">
<span class="s1">str</span><span class="s2"> = </span>"Java$Discover"<span class="s2">;</span></div>
<div class="p1">
<span class="s2">Output : </span>revo$csiDavaJ<span style="color: black;"> </span></div>
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
</style>
<br />
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #3933ff}
span.s1 {color: #7e504f}
span.s2 {color: #000000}
</style>
<br />
<div class="p1">
<span class="s1">str</span><span class="s2"> = </span>"A!@#$% ^&*()Z"<span class="s2">;</span></div>
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #3933ff}
span.s1 {color: #7e504f}
span.s2 {color: #000000}
</style>
<br />
<div class="p1">
<span class="s2">Output : </span>Z!@#$% ^&*()A</div>
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
</style>
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
</style>
<br />
Lets see the solution,<br />
<br />
<ul style="text-align: left;">
<li>First lets take Ascii value of numerics and alphabets (including caps) which comes as 48 to 57 for numeric (0...9), then 65 to 90 for alphabet (A...Z) and 97 to 122 for alphabet (a...z).</li>
<li>Just compare first and last character of string and if its alphanumeric then swap else continue with other characters as same way. </li>
<li>This makes sure we are swapping or reversing only alphanumeric and by leaving all other special characters @ same index position. </li>
</ul>
<div>
Lets see simple Java code implementation for the same.</div>
<div>
<br /></div>
<div>
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #008800;">public</span> <span style="color: #008800;">class</span> <span style="color: #bb0066;">StringReverse</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">public</span> <span style="color: #008800;">static</span> <span style="color: #333399;">void</span> <span style="color: #0066bb;">main</span><span style="color: #333333;">(</span>String<span style="color: #333333;">[]</span> args<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
String str <span style="color: #333333;">=</span> <span style="background-color: #fff0f0;">"A!@#$% ^&*()Z"</span><span style="color: #333333;">;</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"Original String : "</span><span style="color: #333333;">+</span>str<span style="color: #333333;">);</span>
str <span style="color: #333333;">=</span> <span style="color: #008800;">new</span> StringReverse<span style="color: #333333;">().</span><span style="color: #0000cc;">reverseString</span><span style="color: #333333;">(</span>str<span style="color: #333333;">);</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"Reversed String : "</span><span style="color: #333333;">+</span>str<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">public</span> String <span style="color: #0066bb;">reverseString</span><span style="color: #333333;">(</span>String str<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #333399;">char</span><span style="color: #333333;">[]</span> arr <span style="color: #333333;">=</span> str<span style="color: #333333;">.</span><span style="color: #0000cc;">toCharArray</span><span style="color: #333333;">();</span>
<span style="color: #008800;">for</span> <span style="color: #333333;">(</span><span style="color: #333399;">int</span> i <span style="color: #333333;">=</span> <span style="color: #0000dd;">0</span><span style="color: #333333;">,</span> j <span style="color: #333333;">=</span> str<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span><span style="color: #333333;">()</span> <span style="color: #333333;">-</span> <span style="color: #0000dd;">1</span><span style="color: #333333;">;</span> i <span style="color: #333333;"><</span> j<span style="color: #333333;">;)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>alphaNumericCheck<span style="color: #333333;">(</span>arr<span style="color: #333333;">[</span>i<span style="color: #333333;">])</span> <span style="color: #333333;">&&</span> alphaNumericCheck<span style="color: #333333;">(</span>arr<span style="color: #333333;">[</span>j<span style="color: #333333;">]))</span> <span style="color: #333333;">{</span>
<span style="color: #333399;">char</span> tmp <span style="color: #333333;">=</span> arr<span style="color: #333333;">[</span>i<span style="color: #333333;">];</span>
arr<span style="color: #333333;">[</span>i<span style="color: #333333;">]</span> <span style="color: #333333;">=</span> arr<span style="color: #333333;">[</span>j<span style="color: #333333;">];</span>
arr<span style="color: #333333;">[</span>j<span style="color: #333333;">]</span> <span style="color: #333333;">=</span> tmp<span style="color: #333333;">;</span>
i<span style="color: #333333;">++;</span>
j<span style="color: #333333;">--;</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #008800;">if</span> <span style="color: #333333;">(!</span>alphaNumericCheck<span style="color: #333333;">(</span>arr<span style="color: #333333;">[</span>i<span style="color: #333333;">]))</span> <span style="color: #333333;">{</span>
i<span style="color: #333333;">++;</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #008800;">if</span> <span style="color: #333333;">(!</span>alphaNumericCheck<span style="color: #333333;">(</span>arr<span style="color: #333333;">[</span>j<span style="color: #333333;">]))</span> <span style="color: #333333;">{</span>
j<span style="color: #333333;">--;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">return</span> String<span style="color: #333333;">.</span><span style="color: #0000cc;">valueOf</span><span style="color: #333333;">(</span>arr<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">public</span> <span style="color: #333399;">boolean</span> <span style="color: #0066bb;">alphaNumericCheck</span><span style="color: #333333;">(</span><span style="color: #333399;">char</span> ch<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">((</span>ch <span style="color: #333333;">>=</span> <span style="color: #0000dd;">48</span> <span style="color: #333333;">&&</span> ch <span style="color: #333333;"><=</span> <span style="color: #0000dd;">57</span><span style="color: #333333;">)</span> <span style="color: #888888;">// Numeric 0 to 9</span>
<span style="color: #333333;">||</span> <span style="color: #333333;">(</span>ch <span style="color: #333333;">>=</span> <span style="color: #0000dd;">65</span> <span style="color: #333333;">&&</span> ch <span style="color: #333333;"><=</span> <span style="color: #0000dd;">90</span><span style="color: #333333;">)</span> <span style="color: #888888;">// Alphabet A to Z (caps)</span>
<span style="color: #333333;">||</span> <span style="color: #333333;">(</span>ch <span style="color: #333333;">>=</span> <span style="color: #0000dd;">97</span> <span style="color: #333333;">&&</span> ch <span style="color: #333333;"><=</span> <span style="color: #0000dd;">122</span><span style="color: #333333;">))</span> <span style="color: #888888;">// Alphabet a to z</span>
<span style="color: #008800;">return</span> <span style="color: #008800;">true</span><span style="color: #333333;">;</span>
<span style="color: #008800;">else</span>
<span style="color: #008800;">return</span> <span style="color: #008800;">false</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
</pre>
</div>
</div>
<div>
<br /></div>
<div>
<b>OUTPUT:</b></div>
<div>
<br /></div>
<div>
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;">Original String <span style="color: #333333;">:</span> A<span style="color: #333333;">!</span><span style="background-color: #ffaaaa; color: red;">@#</span>$<span style="color: #333333;">%</span> <span style="color: #333333;">^&*()</span>Z
Reversed String <span style="color: #333333;">:</span> Z<span style="color: #333333;">!</span><span style="background-color: #ffaaaa; color: red;">@#</span>$<span style="color: #333333;">%</span> <span style="color: #333333;">^&*()</span>A
</pre>
</div>
</div>
</div>
Java Discoverhttp://www.blogger.com/profile/18049511268651382259noreply@blogger.comtag:blogger.com,1999:blog-6801225484322010450.post-42893526169723582572018-07-05T11:05:00.001+05:302018-07-05T11:05:34.739+05:30How to delete a Node from Linked List in java<div dir="ltr" style="text-align: left;" trbidi="on">
In our earlier tutorials we have seen lot of Linked List related questions and programs. On similar stage another question is how to delete a Node from a Linked List. Same way lets create a Linked List and try to delete a node from it with simple Java code.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2ZLMFPM5oPsL6OChipeoj7hYgCR7aOaT88BbGP5w23vAUtd-4D7DGHqh6IpN4-ASIXQUBhloMMQDvD3nq2IPiIU6TkbF52Jkvr2JEvfF4SXOud_u5Cvm2WetmRkRengcUBJu0aFsu7rA/s1600/Delete+Node.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="How to delete a Node from Linked List in java" border="0" data-original-height="387" data-original-width="990" height="123" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2ZLMFPM5oPsL6OChipeoj7hYgCR7aOaT88BbGP5w23vAUtd-4D7DGHqh6IpN4-ASIXQUBhloMMQDvD3nq2IPiIU6TkbF52Jkvr2JEvfF4SXOud_u5Cvm2WetmRkRengcUBJu0aFsu7rA/s320/Delete+Node.png" title="How to delete a Node from Linked List in java" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #008800;">class</span> <span style="color: #bb0066;">NODE</span> <span style="color: #333333;">{</span>
<span style="color: #333399;">int</span> data<span style="color: #333333;">;</span>
NODE next <span style="color: #333333;">=</span> <span style="color: #008800;">null</span><span style="color: #333333;">;</span>
<span style="color: #008800;">public</span> <span style="color: #0066bb;">NODE</span><span style="color: #333333;">(</span><span style="color: #333399;">int</span> data<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">this</span><span style="color: #333333;">.</span><span style="color: #0000cc;">data</span> <span style="color: #333333;">=</span> data<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">public</span> <span style="color: #008800;">class</span> <span style="color: #bb0066;">DeleteLLNode</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">public</span> <span style="color: #008800;">static</span> <span style="color: #333399;">void</span> <span style="color: #0066bb;">main</span><span style="color: #333333;">(</span>String<span style="color: #333333;">[]</span> args<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #333399;">int</span> array<span style="color: #333333;">[]</span> <span style="color: #333333;">=</span> <span style="color: #008800;">new</span> <span style="color: #333399;">int</span><span style="color: #333333;">[]</span> <span style="color: #333333;">{</span> <span style="color: #0000dd;">11</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">12</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">13</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">14</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">15</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">16</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">17</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">18</span> <span style="color: #333333;">};</span>
<span style="color: #333399;">int</span> deleteNode <span style="color: #333333;">=</span> <span style="color: #0000dd;">15</span><span style="color: #333333;">;</span>
DeleteLLNode obj <span style="color: #333333;">=</span> <span style="color: #008800;">new</span> DeleteLLNode<span style="color: #333333;">();</span>
<span style="color: #888888;">// Create linkedlist based all array values</span>
NODE start <span style="color: #333333;">=</span> obj<span style="color: #333333;">.</span><span style="color: #0000cc;">createLinkedList</span><span style="color: #333333;">(</span>array<span style="color: #333333;">);</span>
<span style="color: #888888;">// Print all node values before delete</span>
obj<span style="color: #333333;">.</span><span style="color: #0000cc;">printLinkedList</span><span style="color: #333333;">(</span>start<span style="color: #333333;">);</span>
start <span style="color: #333333;">=</span> obj<span style="color: #333333;">.</span><span style="color: #0000cc;">deleteNode</span><span style="color: #333333;">(</span>start<span style="color: #333333;">,</span> deleteNode<span style="color: #333333;">);</span>
<span style="color: #888888;">// Print all node values after delete</span>
obj<span style="color: #333333;">.</span><span style="color: #0000cc;">printLinkedList</span><span style="color: #333333;">(</span>start<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #888888;">/*</span>
<span style="color: #888888;"> * Create LinkedList and return the start pointer/node</span>
<span style="color: #888888;"> */</span>
<span style="color: #008800;">public</span> NODE <span style="color: #0066bb;">createLinkedList</span><span style="color: #333333;">(</span><span style="color: #333399;">int</span><span style="color: #333333;">[]</span> array<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
NODE start <span style="color: #333333;">=</span> <span style="color: #008800;">null</span><span style="color: #333333;">;</span>
NODE tmp <span style="color: #333333;">=</span> <span style="color: #008800;">null</span><span style="color: #333333;">;</span>
<span style="color: #008800;">for</span> <span style="color: #333333;">(</span><span style="color: #333399;">int</span> i <span style="color: #333333;">:</span> array<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
tmp <span style="color: #333333;">=</span> <span style="color: #008800;">new</span> NODE<span style="color: #333333;">(</span>i<span style="color: #333333;">);</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>start <span style="color: #333333;">==</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
start <span style="color: #333333;">=</span> tmp<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span> <span style="color: #008800;">else</span> <span style="color: #333333;">{</span>
NODE mover <span style="color: #333333;">=</span> start<span style="color: #333333;">;</span>
<span style="color: #008800;">while</span> <span style="color: #333333;">(</span>mover<span style="color: #333333;">.</span><span style="color: #0000cc;">next</span> <span style="color: #333333;">!=</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
mover <span style="color: #333333;">=</span> mover<span style="color: #333333;">.</span><span style="color: #0000cc;">next</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
mover<span style="color: #333333;">.</span><span style="color: #0000cc;">next</span> <span style="color: #333333;">=</span> tmp<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">return</span> start<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #888888;">/*</span>
<span style="color: #888888;"> * Print all linked list node values </span>
<span style="color: #888888;"> */</span>
<span style="color: #008800;">public</span> <span style="color: #333399;">void</span> <span style="color: #0066bb;">printLinkedList</span><span style="color: #333333;">(</span>NODE start<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">print</span><span style="color: #333333;">(</span><span style="background-color: #fff0f0;">"Linked List: "</span><span style="color: #333333;">);</span>
<span style="color: #008800;">while</span><span style="color: #333333;">(</span>start <span style="color: #333333;">!=</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">print</span><span style="color: #333333;">(</span>start<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span> <span style="color: #333333;">+</span><span style="background-color: #fff0f0;">", "</span><span style="color: #333333;">);</span>
start <span style="color: #333333;">=</span> start<span style="color: #333333;">.</span><span style="color: #0000cc;">next</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">();</span>
<span style="color: #333333;">}</span>
<span style="color: #888888;">/*</span>
<span style="color: #888888;"> * Delete Linked List node </span>
<span style="color: #888888;"> */</span>
<span style="color: #008800;">public</span> NODE <span style="color: #0066bb;">deleteNode</span><span style="color: #333333;">(</span>NODE start<span style="color: #333333;">,</span> <span style="color: #333399;">int</span> val<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
NODE tmp <span style="color: #333333;">=</span> start<span style="color: #333333;">;</span>
<span style="color: #888888;">// If its first node to delete</span>
<span style="color: #008800;">if</span><span style="color: #333333;">(</span>tmp <span style="color: #333333;">!=</span> <span style="color: #008800;">null</span> <span style="color: #333333;">&&</span> tmp<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span> <span style="color: #333333;">==</span> val<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
start <span style="color: #333333;">=</span> start<span style="color: #333333;">.</span><span style="color: #0000cc;">next</span><span style="color: #333333;">;</span>
<span style="color: #008800;">return</span> start<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
NODE previous <span style="color: #333333;">=</span> <span style="color: #008800;">null</span><span style="color: #333333;">;</span>
<span style="color: #008800;">while</span><span style="color: #333333;">(</span>tmp <span style="color: #333333;">!=</span> <span style="color: #008800;">null</span><span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">if</span><span style="color: #333333;">(</span>tmp<span style="color: #333333;">.</span><span style="color: #0000cc;">data</span> <span style="color: #333333;">==</span> val<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
previous<span style="color: #333333;">.</span><span style="color: #0000cc;">next</span> <span style="color: #333333;">=</span> tmp<span style="color: #333333;">.</span><span style="color: #0000cc;">next</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
previous <span style="color: #333333;">=</span> tmp<span style="color: #333333;">;</span>
tmp <span style="color: #333333;">=</span> tmp<span style="color: #333333;">.</span><span style="color: #0000cc;">next</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">return</span> start<span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
</pre>
</div>
<br />
<br />
<b>OUTPUT:</b><br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;">Linked <span style="color: #997700; font-weight: bold;">List:</span> <span style="color: #0000dd; font-weight: bold;">11</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">12</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">13</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">14</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">15</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">16</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">17</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">18</span><span style="color: #333333;">,</span>
Linked <span style="color: #997700; font-weight: bold;">List:</span> <span style="color: #0000dd; font-weight: bold;">11</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">12</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">13</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">14</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">16</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">17</span><span style="color: #333333;">,</span> <span style="color: #0000dd; font-weight: bold;">18</span><span style="color: #333333;">,</span>
</pre>
</div>
<br />
<br /></div>
Java Discoverhttp://www.blogger.com/profile/18049511268651382259noreply@blogger.comtag:blogger.com,1999:blog-6801225484322010450.post-88923574643214085522018-07-01T01:40:00.000+05:302018-07-01T01:40:10.893+05:30How to write a simple and easy Binary search algorithm<div dir="ltr" style="text-align: left;" trbidi="on">
Given a sorted array array[] of n elements and need to find the element 'val' present in the array or not by using Binary search technique.<br />
<br />
<b><i>NOTE: Binary search works only on sorted array.</i></b><br />
<br />
Binary Search: Search a sorted array by repeatedly dividing the search interval in half. Begin with an interval covering the whole array. If the value of the search key is less than the item in the middle of the interval, narrow the interval to the lower half. Otherwise narrow it to the upper half. Repeatedly check until the value is found or the interval is empty.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNFrwo3OyL6YMS6Oa8NnSbd4uzGT9uoFJNRCTefc2lRftXjocWoPnp49BF2jCXLJYUrEFztMqGqnKcw5aUkHKAQaArWQx_2viTHknSL1BGXAfIxMMQraGfI03NCE4m7aUBanq-t77O5k0/s1600/Binary+Search.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="How to write a simple and easy Binary search algorithm" border="0" data-original-height="415" data-original-width="500" height="265" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNFrwo3OyL6YMS6Oa8NnSbd4uzGT9uoFJNRCTefc2lRftXjocWoPnp49BF2jCXLJYUrEFztMqGqnKcw5aUkHKAQaArWQx_2viTHknSL1BGXAfIxMMQraGfI03NCE4m7aUBanq-t77O5k0/s320/Binary+Search.png" title="How to write a simple and easy Binary search algorithm" width="320" /></a></div>
<br />
<br />
<b>Example: </b><br />
<b>Array</b>[] = { 3, 7, 9, 10, 12, 15, 18, 23, 27, 29, 30, 32, 36, 39, 41, 43, 54 }<br />
<b>value</b> = 10<br />
<br />
<b>OUTPUT</b>: 3 (10 found in 3rd index)<br />
<br />
<br />
<b>Array</b>[] = { 3, 7, 9, 10, 12, 15, 18, 23, 27, 29, 30, 32, 36, 39, 41, 43, 54 }<br />
<b>value</b> = 99<br />
<br />
<b>OUTPUT</b>: -1 (99 not present in the array)<br />
<br />
Lets see simple java code for Binary Search.<br />
<br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #008800;">public</span> <span style="color: #008800;">class</span> <span style="color: #bb0066;">BinarySearch</span> <span style="color: #333333;">{</span>
<span style="color: #008800;">public</span> <span style="color: #008800;">static</span> <span style="color: #333399;">void</span> <span style="color: #0066bb;">main</span><span style="color: #333333;">(</span>String<span style="color: #333333;">[]</span> args<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #333399;">int</span> array<span style="color: #333333;">[]</span> <span style="color: #333333;">=</span> <span style="color: #008800;">new</span> <span style="color: #333399;">int</span><span style="color: #333333;">[]</span> <span style="color: #333333;">{</span> <span style="color: #0000dd;">3</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">7</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">9</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">10</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">12</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">15</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">18</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">23</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">27</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">29</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">30</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">32</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">36</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">39</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">41</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">43</span><span style="color: #333333;">,</span> <span style="color: #0000dd;">54</span> <span style="color: #333333;">};</span>
<span style="color: #333399;">int</span> find <span style="color: #333333;">=</span> <span style="color: #0000dd;">10</span><span style="color: #333333;">;</span>
<span style="color: #333399;">int</span> output <span style="color: #333333;">=</span> <span style="color: #008800;">new</span> BinarySearch<span style="color: #333333;">().</span><span style="color: #0000cc;">binarySearch</span><span style="color: #333333;">(</span>array<span style="color: #333333;">,</span> find<span style="color: #333333;">);</span>
System<span style="color: #333333;">.</span><span style="color: #0000cc;">out</span><span style="color: #333333;">.</span><span style="color: #0000cc;">println</span><span style="color: #333333;">(</span>output<span style="color: #333333;">);</span>
<span style="color: #333333;">}</span>
<span style="color: #008800;">public</span> <span style="color: #333399;">int</span> <span style="color: #0066bb;">binarySearch</span><span style="color: #333333;">(</span><span style="color: #333399;">int</span><span style="color: #333333;">[]</span> array<span style="color: #333333;">,</span> <span style="color: #333399;">int</span> val<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #333399;">int</span> p <span style="color: #333333;">=</span> <span style="color: #0000dd;">0</span><span style="color: #333333;">,</span> r <span style="color: #333333;">=</span> array<span style="color: #333333;">.</span><span style="color: #0000cc;">length</span> <span style="color: #333333;">-</span> <span style="color: #0000dd;">1</span><span style="color: #333333;">;</span>
<span style="color: #008800;">while</span> <span style="color: #333333;">(</span>p <span style="color: #333333;"><=</span> r<span style="color: #333333;">)</span> <span style="color: #333333;">{</span>
<span style="color: #333399;">int</span> q <span style="color: #333333;">=</span> <span style="color: #333333;">(</span>p <span style="color: #333333;">+</span> r<span style="color: #333333;">)</span> <span style="color: #333333;">/</span> <span style="color: #0000dd;">2</span><span style="color: #333333;">;</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>array<span style="color: #333333;">[</span>q<span style="color: #333333;">]</span> <span style="color: #333333;">==</span> val<span style="color: #333333;">)</span>
<span style="color: #008800;">return</span> q<span style="color: #333333;">;</span>
<span style="color: #008800;">if</span> <span style="color: #333333;">(</span>array<span style="color: #333333;">[</span>q<span style="color: #333333;">]</span> <span style="color: #333333;">></span> val<span style="color: #333333;">)</span>
r <span style="color: #333333;">=</span> q <span style="color: #333333;">-</span> <span style="color: #0000dd;">1</span><span style="color: #333333;">;</span>
<span style="color: #008800;">else</span>
p <span style="color: #333333;">=</span> q <span style="color: #333333;">+</span> <span style="color: #0000dd;">1</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #888888;">// number not present in the array</span>
<span style="color: #008800;">return</span> <span style="color: #333333;">-</span><span style="color: #0000dd;">1</span><span style="color: #333333;">;</span>
<span style="color: #333333;">}</span>
<span style="color: #333333;">}</span>
</pre>
</div>
<br />
<br />
<b>OUTPUT</b>:<br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #0000dd; font-weight: bold;">3</span>
</pre>
</div>
<br />
<div>
<br /></div>
</div>
Java Discoverhttp://www.blogger.com/profile/18049511268651382259noreply@blogger.com