ARTS打卡第一周
Algorithm:每周至少做一個 leetcode 的算法題
542. 01 矩陣
給定一個由 0 和 1 組成的矩陣酱塔,找出每個元素到最近的 0 的距離。
兩個相鄰元素間的距離為 1 。
來源:力扣(LeetCode)
鏈接:https://https://leetcode-cn.com/problems/01-matrix/
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有多律。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán)儒陨,非商業(yè)轉(zhuǎn)載請注明出處刁品。
解題思路:
當前位置距離0的最近距離為上印蔬、下傀蚌、左基显、右相鄰點的距離+1
從左上遍歷時,根據(jù)上面的觀點更新數(shù)組善炫,右下遍歷時撩幽,比較最小值,更換數(shù)組值
代碼:
vector<vector<int>> updateMatrix(vector<vector<int>>& matrix)
{
int width = matrix.size();
int height = matrix[0].size();
// 賦值vtDst數(shù)組销部,INT_MAX / 2是由于遍歷時摸航,可能出現(xiàn)初始值+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:閱讀并點評至少一篇英文技術(shù)文章
commenting-out-a-block-of-code-with-vim
使用vim一時爽舅桩,一直使用一直爽
Tip:學習至少一個技術(shù)技巧
windows下分析使用vs2017內(nèi)置的內(nèi)存工具分析內(nèi)存泄漏酱虎,本質(zhì)上還是通過快照進行人工的確認泄漏處。
類似windows平臺下的工具 glags.exe\ pageheap.exe
Share:分享一篇有觀點和思考的技術(shù)文章
C++20新特性已經(jīng)推出擂涛,而之前的一些公司開發(fā)工具在vs2015读串,且眾多C11的新特性不進行引入聊记,等到20的特性被引入不知道又是何年何月。