最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++?LeetCode542矩陣示例詳解

 更新時間:2022年12月16日 15:12:36   作者:LetMeFly  
這篇文章主要為大家介紹了C++?LeetCode542矩陣示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

LeetCode  542.01 矩陣

力扣題目鏈接:leetcode.cn/problems/01…

給定一個由 01 組成的矩陣 mat ,請輸出一個大小相同的矩陣,其中每一個格子是 mat 中對應位置元素到最近的 0 的距離。

兩個相鄰元素間的距離為 1 。

示例 1:

輸入:mat = [[0,0,0],[0,1,0],[0,0,0]]
輸出:[[0,0,0],[0,1,0],[0,0,0]]

示例 2:

輸入:mat = [[0,0,0],[0,1,0],[1,1,1]]
輸出:[[0,0,0],[0,1,0],[1,2,1]] 

提示:

  • m == mat.length
  • n == mat[i].length
  • 1 <= m, n <= 104
  • 1 <= m * n <= 104
  • mat[i][j] is either 0 or 1.
  • mat 中至少有一個 0

方法一:廣度優(yōu)先搜索

首先遍歷原始矩陣,找到所有的0,將其位置入隊。

接著在隊列不為空時,不斷出隊一個位置,并判斷這個位置的上下左右是否被遍歷過。

如果還沒有被遍歷過,那么就將新的位置入隊。并將地圖中新的位置的值修改為“出隊位置的值 + 1”

原理:

所有的原始的0最終結果都是0。廣度優(yōu)先搜索就是在所有的“0”的位置中,走一步。這一步所到的位置就是“1”步能到達的位置。同理,“1”經過一步到達的位置就是“2”。最先到達的就是步數最少的。

  • 時間復雜度O(nm)
  • 空間復雜度O(nm)

AC代碼

C++

typedef pair<int, int> pii;
const int direcitons[4][2] = {{-1, 0}, {1, 0}, {0, 1}, {0, -1}};
class Solution {
public:
    vector<vector<int>> updateMatrix(vector<vector<int>>& mat) {
        int n = mat.size(), m = mat[0].size();
        vector<vector<bool>> visited(n, vector<bool>(m, false));
        queue<pii> q;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                if (!mat[i][j]) {
                    visited[i][j] = true;
                    q.push({i, j});
                }
            }
        }
        while (q.size()) {
            pii thisNode = q.front();
            q.pop();
            for (int d = 0; d < 4; d++) {
                int tx = thisNode.first + direcitons[d][0];
                int ty = thisNode.second + direcitons[d][1];
                if (tx >= 0 && tx < n && ty >= 0 && ty < m) {
                    if (!visited[tx][ty]) {
                        visited[tx][ty] = true;
                        mat[tx][ty] = mat[thisNode.first][thisNode.second] + 1;
                        q.push({tx, ty});
                    }
                }
            }
        }
        return mat;
    }
};

以上就是C++ LeetCode542矩陣示例詳解的詳細內容,更多關于C++ LeetCode542矩陣的資料請關注腳本之家其它相關文章!

相關文章

  • C語言數組超詳細講解上

    C語言數組超詳細講解上

    數組是一組有序的數據的集合,數組中元素類型相同,由數組名和下標唯一地確定,數組中數據不僅數據類型相同,而且在計算機內存里連續(xù)存放,地址編號最低的存儲單元存放數組的起始元素,地址編號最高的存儲單元存放數組的最后一個元素
    2022-04-04
  • 基于樹莓派的語音機器人

    基于樹莓派的語音機器人

    這篇文章主要為大家詳細介紹了基于樹莓派的語音機器人,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • C語言 選擇排序算法詳解及實現代碼

    C語言 選擇排序算法詳解及實現代碼

    本文主要介紹C語言 選擇排序算法,這里對排序算法做了詳細說明,并附代碼示例,有需要的小伙伴可以參考下
    2016-08-08
  • opencv實現角點檢測

    opencv實現角點檢測

    這篇文章主要為大家詳細介紹了opencv實現角點檢測,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • c++實現解析zip文件的示例代碼

    c++實現解析zip文件的示例代碼

    這篇文章主要為大家詳細介紹了如何利用c++實現解析zip文件,并對流式文件pptx內容的修改,文中的示例代碼講解詳細,有需要的小伙伴可以參考一下
    2023-12-12
  • C++讀入

    C++讀入"N,X,Y,Z"格式文本文件到Eigen3 Matrix

    這篇文章主要介紹了C++讀入"N,X,Y,Z"格式文本文件到Eigen3 Matrix,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • 深入理解Qt信號槽機制

    深入理解Qt信號槽機制

    信號槽是 Qt 框架引以為豪的機制之一。本文主要介紹了Qt信號槽機制,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • C++實現CreatThread函數主線程與工作線程交互的方法

    C++實現CreatThread函數主線程與工作線程交互的方法

    這篇文章主要介紹了C++實現CreatThread函數主線程與工作線程交互的方法,是Windows應用程序設計中非常實用的方法,需要的朋友可以參考下
    2014-10-10
  • NDK 數據結構之隊列與棧等的實現

    NDK 數據結構之隊列與棧等的實現

    這篇文章主要介紹了NDK 數據結構之隊列與棧等的實現的相關資料,希望通過本文大家能理解掌握這部分內容,需要的朋友可以參考下
    2017-10-10
  • C++輸入一個字符串,把其中的字符按照逆序輸出的兩種方法解析

    C++輸入一個字符串,把其中的字符按照逆序輸出的兩種方法解析

    以下是對C++中輸入一個字符串,把其中的字符按照逆序輸出的兩種方法進行了詳細的分析介紹,需要的朋友可以過來參考下
    2013-07-07

最新評論

福安市| 晋江市| 太原市| 盘山县| 措美县| 华阴市| 新野县| 交城县| 密山市| 平昌县| 天水市| 沅陵县| 湘潭县| 织金县| 申扎县| 尤溪县| 江孜县| 南溪县| 惠东县| 阿克苏市| 黑河市| 德惠市| 阜新| 柳河县| 宣城市| 紫云| 安泽县| 班玛县| 徐水县| 鄯善县| 崇信县| 达孜县| 界首市| 盐亭县| 马山县| 阜阳市| 贵阳市| 临海市| 盈江县| 吉木萨尔县| 夹江县|