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新特性已经推出,而之前的一些公司开发工具在vs2015,且众多C11的新特性不进行引入,等到20的特性被引入不知道又是何年何月。
网友评论