ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

[leetcode 542] js动态规划优化双100%

2020-04-15 13:00:28  阅读:240  来源: 互联网

标签:matrix min 100% js 542 length let Math dp


题目描述

  1. 01 矩阵
    给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。
    两个相邻元素间的距离为 1 。

解题思路

  1. 每一个‘1’的距离与自身临近的上、下、左、右四个位置相关
  2. dp[curr] = min(dp[curr], dp[prev] + 1)// curr当前位置,prev为上、下、左、右四个位置
  3. 需要‘左-右’、‘上-下’、‘右-左’、‘下-上’四遍动态规划遍历
  4. 结合矩阵遍历的特点可以优化为‘左上-右下’、‘右下-左上’两遍动态规划
  5. 直接用原矩阵作为状态矩阵

代码

/**
 * @param {number[][]} matrix
 * @return {number[][]}
 */
var updateMatrix = function(matrix) {
    // dp optimise
    if (matrix.length==0) {
        return [];
    }
    let m=matrix.length,n=matrix[0].length;
    // left-top to right-bottom
    for (let i=0;i<m;i++) {
        for (let j=0;j<n;j++) {
            if (matrix[i][j] != 0) {
                matrix[i][j] = m+n;
                if (i > 0) {
                    matrix[i][j] = Math.min(matrix[i-1][j] + 1, matrix[i][j]);
                }
                if (j > 0) {
                    matrix[i][j] = Math.min(matrix[i][j-1] + 1, matrix[i][j]);
                }
            }
        }
    }
    // right-bottom to left-top
    for (let i=m-1;i>=0;i--) {
        for (let j=n-1;j>=0;j--) {
            // distance
            if (matrix[i][j] != 0) {
                if (j < n-1) {
                    matrix[i][j] = Math.min(matrix[i][j], matrix[i][j+1] + 1);
                }
                if (i < matrix.length-1) {
                    matrix[i][j] = Math.min(matrix[i][j], matrix[i+1][j] + 1);
                }
            }
        }
    }
    return matrix;
};

结果

人生第一次双100%

标签:matrix,min,100%,js,542,length,let,Math,dp
来源: https://www.cnblogs.com/dapianzi/p/12704516.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有