美文网首页
ARTS打卡第一周

ARTS打卡第一周

作者: MR_Model | 来源:发表于2021-01-23 10:44 被阅读0次

    ARTS打卡第一周

    Algorithm:每周至少做一个 leetcode 的算法题

    542. 01 矩阵

    给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。
    
    两个相邻元素间的距离为 1 。
    
    
    来源:力扣(LeetCode)
    链接:https://https://leetcode-cn.com/problems/01-matrix/
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
    
    解题思路:
    
    当前位置距离0的最近距离为上、下、左、右相邻点的距离+1
    
    从左上遍历时,根据上面的观点更新数组,右下遍历时,比较最小值,更换数组值
    
    代码:
    
        vector<vector<int>> updateMatrix(vector<vector<int>>& matrix)
         {
        int width = matrix.size();
        int height = matrix[0].size();
    
        // 赋值vtDst数组,INT_MAX / 2是由于遍历时,可能出现初始值+1的情况,防止超出长度
        vector<vector<int>> vtDst(width, vector<int>(height, INT_MAX / 2));
        for (int i = 0; i < width; i++)
        {
            for (int j = 0; j < height; j++)
            {
                if (matrix[i][j] == 0)
                {
                    vtDst[i][j] = 0;
                }
            }
        }
    
        // 从左上遍历
        for (int i = 0; i < width; i++)
        {
            for (int j = 0; j < height; j++)
            {
                if (i - 1 >= 0)
                {
                    vtDst[i][j] = min(vtDst[i][j], vtDst[i - 1][j] +1);
                }
    
                if (j - 1 >= 0)
                {
                    vtDst[i][j] = min(vtDst[i][j], vtDst[i][j-1] + 1);
                }
            }
        }
    
        // 从右下遍历
        for (int i = width - 1; i >= 0; i--)
        {
            for (int j = height - 1; j >= 0; j--)
            {
                if (i + 1 < width)
                {
                    vtDst[i][j] = min(vtDst[i][j], vtDst[i + 1][j] + 1);
                }
    
                if (j + 1 < height)
                {
                    vtDst[i][j] = min(vtDst[i][j], vtDst[i][j + 1] + 1);
                }
            }
        }
    
        return vtDst;
    }
    

    Review:阅读并点评至少一篇英文技术文章

    commenting-out-a-block-of-code-with-vim

    使用vim一时爽,一直使用一直爽
    

    Tip:学习至少一个技术技巧

    windows下分析使用vs2017内置的内存工具分析内存泄漏,本质上还是通过快照进行人工的确认泄漏处。
    
    类似windows平台下的工具 glags.exe\ pageheap.exe
    

    Share:分享一篇有观点和思考的技术文章

    C++20特性

    C++20新特性已经推出,而之前的一些公司开发工具在vs2015,且众多C11的新特性不进行引入,等到20的特性被引入不知道又是何年何月。

    相关文章

      网友评论

          本文标题:ARTS打卡第一周

          本文链接:https://www.haomeiwen.com/subject/cdwyzktx.html