깊이 / 넓이 우선 검색 LeetCode 542 01 매트릭스

3185 단어 studyDFSBFS
LeetCode 542
01 Matrix
  • Reference: http://www.cnblogs.com/grandyang/p/6602288.html
  • Problem 설명: 0 1 , 0 。 구체 적 인 제목 정보:https://leetcode.com/problems/01-matrix/description/
  • 솔 루 션: 대기 열 보조 로 깊이 / 넓이 우선 검색 실현
  • class Solution {
    public:
        vector<vector<int>> updateMatrix(vector<vector<int>>& matrix) {
        //res      
            vectorint, int>> res = {{0, -1}, {0, 1}, {1, 0}, {-1, 0}}; 
            queueint, int>> q;
            for (int i = 0; i < matrix.size(); i++) {
                for (int j = 0; j < matrix[0].size(); j++) {
                    if (matrix[i][j] == 0) q.push({i, j});
                    else matrix[i][j] = INT_MAX;
                }
            }
            while(!q.empty()) {
                pair<int, int> t = q.front();
                q.pop();
                for (int i = 0; i < res.size(); i++) {
                    int x = t.first+res[i].first;
                    int y = t.second+res[i].second;
                    if (x < 0 || x >= matrix.size() || y < 0 || y >= matrix[0].size() ||matrix[x][y]<=matrix[t.first][t.second]) continue;
                    matrix[x][y] = matrix[t.first][t.second]+1;
                    q.push({x, y});
                }
            }
            return matrix;
        }
    };

    좋은 웹페이지 즐겨찾기