<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>dynamic-programming &#8211; JSAlgorithm</title>
	<atom:link href="https://jsalgorithm.com/tag/dp/feed/" rel="self" type="application/rss+xml" />
	<link>https://jsalgorithm.com</link>
	<description></description>
	<lastBuildDate>Mon, 18 May 2020 22:32:55 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.5.15</generator>
<site xmlns="com-wordpress:feed-additions:1">177240629</site>	<item>
		<title>Unique Paths with Obstacles</title>
		<link>https://jsalgorithm.com/2020/05/18/unique-paths-with-obstacles/</link>
					<comments>https://jsalgorithm.com/2020/05/18/unique-paths-with-obstacles/#respond</comments>
		
		<dc:creator><![CDATA[Ron]]></dc:creator>
		<pubDate>Mon, 18 May 2020 22:32:55 +0000</pubDate>
				<category><![CDATA[Array]]></category>
		<category><![CDATA[Dynamic Programming]]></category>
		<category><![CDATA[Leetcode]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[dynamic-programming]]></category>
		<category><![CDATA[leetcode]]></category>
		<category><![CDATA[matrix]]></category>
		<guid isPermaLink="false">http://50.19.13.106/?p=106</guid>

					<description><![CDATA[let uniquePathsWithObstacles = function(obstacleGrid) { if (!obstacleGrid &#124;&#124; !obstacleGrid.length) return 0; function markNextRowsAsZero(col) { for (let i = col; i &#60; maxCol; i++) { obstacleGrid[0][i] = 0; } } function markNextColumnsAsZero(row) { for (let i = row; i &#60; maxRow; i++) { obstacleGrid[i][0] = 0; } } let maxRow = obstacleGrid.length, maxCol = obstacleGrid[0].length, OBSTACLE [&#8230;]]]></description>
										<content:encoded><![CDATA[
<pre class="wp-block-preformatted">let uniquePathsWithObstacles = function(obstacleGrid) {<br><br>    if (!obstacleGrid || !obstacleGrid.length) return 0;<br><br>    function markNextRowsAsZero(col) {<br>        for (let i = col; i &lt; maxCol; i++) {<br>            obstacleGrid[0][i] = 0;<br>        }<br>    }<br>    function markNextColumnsAsZero(row) {<br>        for (let i = row; i &lt; maxRow; i++) {<br>            obstacleGrid[i][0] = 0;<br>        }<br>    }<br><br>    let maxRow = obstacleGrid.length,<br>        maxCol = obstacleGrid[0].length,<br>        OBSTACLE = 1, VISITED = -1;<br><br>    // first block is obstacle return 0;<br>    if (obstacleGrid[0][0] === OBSTACLE) {<br>        return 0;<br>    }<br><br>    // mark all first rows as either 1 or zero<br>    for (let col = 0; col &lt; maxCol;col++) {<br>        if (obstacleGrid[0][col] === OBSTACLE) {<br>            markNextRowsAsZero(col);<br>            break;<br>        }<br>        else {<br>            obstacleGrid[0][col] = 1;<br>        }<br>    }<br><br>    // mark all first columns as either 1 or zero<br>    for (let row = 1; row &lt; maxRow;row++) {<br>        if (obstacleGrid[row][0] === OBSTACLE) {<br>            markNextColumnsAsZero(row);<br>            break;<br>        }<br>        else {<br>            obstacleGrid[row][0] = 1;<br>        }<br>    }<br><br>    for (let row = 1; row &lt; maxRow;row++) {<br>        for (let col = 1; col &lt; maxCol;col++) {<br>            if (obstacleGrid[row][col] === OBSTACLE) {<br>                obstacleGrid[row][col] = 0;<br>            }<br>            else {<br>                obstacleGrid[row][col] =<br>                    obstacleGrid[row - 1][col] +<br>                    obstacleGrid[row][col - 1];<br>            }<br><br>        }<br>    }<br><br>    return obstacleGrid[maxRow - 1][maxCol - 1];<br>};</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://jsalgorithm.com/2020/05/18/unique-paths-with-obstacles/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">106</post-id>	</item>
		<item>
		<title>Unique Paths (Iterative)</title>
		<link>https://jsalgorithm.com/2020/05/18/unique-paths-iterative/</link>
					<comments>https://jsalgorithm.com/2020/05/18/unique-paths-iterative/#respond</comments>
		
		<dc:creator><![CDATA[Ron]]></dc:creator>
		<pubDate>Mon, 18 May 2020 21:48:09 +0000</pubDate>
				<category><![CDATA[Dynamic Programming]]></category>
		<category><![CDATA[Leetcode]]></category>
		<category><![CDATA[Loop]]></category>
		<category><![CDATA[dynamic-programming]]></category>
		<category><![CDATA[leetcode]]></category>
		<category><![CDATA[loop]]></category>
		<guid isPermaLink="false">http://50.19.13.106/?p=104</guid>

					<description><![CDATA[let uniquePaths = function(m, n) { let getKey = (row, col) =&#62; `${row}${col}`; let cache = { } for (let row = 1; row &#60;= m; row++) { for (let col = 1; col &#60;= n; col++) { if (row === 1) { cache[getKey(row, col)] = 1; } else if (col === 1) { cache[getKey(row, [&#8230;]]]></description>
										<content:encoded><![CDATA[
<pre class="wp-block-preformatted">let uniquePaths = function(m, n) {<br><br>    let getKey = (row, col) =&gt; `${row}${col}`;<br><br>    let cache = { }<br>    for (let row = 1; row &lt;= m; row++) {<br>        for (let col = 1; col &lt;= n; col++) {<br>            if (row === 1) {<br>                cache[getKey(row, col)] = 1;<br>            }<br>            else if (col === 1) {<br>                cache[getKey(row, col)] = 1;<br>            }<br>            else {<br>                cache[getKey(row, col)] = cache[getKey(row-1, col)] + cache[getKey(row, col - 1)];<br>            }<br>        }<br>    }<br><br>    return cache[getKey(m,n)];<br>};</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://jsalgorithm.com/2020/05/18/unique-paths-iterative/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">104</post-id>	</item>
		<item>
		<title>Minimum Path Sum (Iterative)</title>
		<link>https://jsalgorithm.com/2020/05/18/minimum-path-sum-iterative/</link>
					<comments>https://jsalgorithm.com/2020/05/18/minimum-path-sum-iterative/#respond</comments>
		
		<dc:creator><![CDATA[Ron]]></dc:creator>
		<pubDate>Mon, 18 May 2020 21:09:12 +0000</pubDate>
				<category><![CDATA[Array]]></category>
		<category><![CDATA[Dynamic Programming]]></category>
		<category><![CDATA[Leetcode]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[dynamic-programming]]></category>
		<category><![CDATA[leetcode]]></category>
		<guid isPermaLink="false">http://50.19.13.106/?p=100</guid>

					<description><![CDATA[let minPathSum = function(grid) { if(!grid &#124;&#124; !grid.length) return 0; let maxRow = grid.length, maxCol = grid[0].length; for (let row = 0; row &#60; maxRow;row++) { for (let col = 0; col &#60; maxCol;col++) { console.log(row, col); if (row === 0) { grid[row][col] = grid[row][col] + (grid[row][col - 1] &#124;&#124; 0); } else if (col [&#8230;]]]></description>
										<content:encoded><![CDATA[
<pre class="wp-block-preformatted">let minPathSum = function(grid) {

    if(!grid || !grid.length) return 0;

    let maxRow = grid.length, maxCol = grid[0].length;
    
    for (let row = 0; row &lt; maxRow;row++) {
        for (let col = 0; col &lt; maxCol;col++) {
            console.log(row, col);
            if (row === 0) {
                grid[row][col] = grid[row][col] + (grid[row][col - 1] || 0);
            }
            else if (col === 0) {
                grid[row][col] = grid[row][col] + grid[row - 1][col];
            } else {
                grid[row][col] = <strong><em>Math</em></strong>.min(
                    grid[row][col] + grid[row - 1][col], // top
                    grid[row][col] + grid[row][col - 1] // left
                );
            }
        }
    }
    return grid[maxRow - 1][maxCol - 1];
};</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://jsalgorithm.com/2020/05/18/minimum-path-sum-iterative/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">100</post-id>	</item>
		<item>
		<title>Fibonacci (Recursion)</title>
		<link>https://jsalgorithm.com/2020/05/12/fibonacci-recursion/</link>
					<comments>https://jsalgorithm.com/2020/05/12/fibonacci-recursion/#respond</comments>
		
		<dc:creator><![CDATA[Ronald]]></dc:creator>
		<pubDate>Tue, 12 May 2020 12:53:10 +0000</pubDate>
				<category><![CDATA[Dynamic Programming]]></category>
		<category><![CDATA[Leetcode]]></category>
		<category><![CDATA[Recursion]]></category>
		<category><![CDATA[dynamic-programming]]></category>
		<category><![CDATA[fibonacci]]></category>
		<category><![CDATA[leetcode]]></category>
		<guid isPermaLink="false">http://50.19.13.106/?p=38</guid>

					<description><![CDATA[function fib(x) { let cache = {} function fibInternal(n) { if(n == 0) return 0; if(n &#60;= 2) return 1; if (cache[n]) return cache[n]; const result = fibInternal(n - 1) + fibInternal(n - 2); cache[n] = result; return result; } return fibInternal(x) }]]></description>
										<content:encoded><![CDATA[
<pre class="wp-block-preformatted">function fib(x) {
    let cache = {}
    function fibInternal(n) {
        if(n == 0) return 0;
        if(n &lt;= 2) return 1;
        if (cache[n]) return cache[n];

        const result = fibInternal(n - 1) + fibInternal(n - 2);
        cache[n] = result;
        return result;
    }

    return fibInternal(x)
}</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://jsalgorithm.com/2020/05/12/fibonacci-recursion/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">38</post-id>	</item>
	</channel>
</rss>
