图论第3天----第841题、第463题

图论第3天----第841题、第463题

文章目录

​ 又继续开始修行,把图论这块补上,估计要个5-6天时间。

一、第841题--钥匙和房间

​ 有向图的遍历。dfs遍历3部曲做,思路也较顺----访问过的,就直接返回;没访问过的,就设为true。注意,这里不需要回溯,因为不是找出一条路径来覆盖到所有的节点,而是能覆盖到就行,不要求一条路径来覆盖。

c++ 复制代码
class Solution {
public:
    void dfs(vector<vector<int>>& rooms, vector<bool>& visited, int x){
        if(visited[x]) return;
        visited[x] = true;
        for(int t : rooms[x]){
            dfs(rooms, visited, t);
        }
    }

    bool canVisitAllRooms(vector<vector<int>>& rooms) {
        vector<bool> visited(rooms.size(), false);
        dfs(rooms, visited, 0);
        for(int i=0; i<rooms.size(); i++){
            if(visited[i] == false) return false;
        }
        return true;
    }
};

二、第463题--岛屿的周长

​ 这个题跟dfs三部曲没关系,属于找规律。根据土地的数量、相邻地块的数量,获得最终的结果----num4 - count2;

c++ 复制代码
class Solution {
public:
    int islandPerimeter(vector<vector<int>>& grid) {
        int n = grid.size();
        int m = grid[0].size();
        int num=0;
        int count=0;
        for(int i=0; i<n; i++){
            for(int j=0; j<m; j++){
                if(grid[i][j] == 1){
                    num++;
                    if(i>0 && grid[i-1][j] == 1) count++;
                    if(j>0 && grid[i][j-1] == 1) count++;
                } 
            }
        }
        return num*4 - count*2;
    }
};
相关推荐
晨非辰38 分钟前
【数据结构入坑指南】--《层序分明:堆的实现、排序与TOP-K问题一站式攻克(源码实战)》
c语言·开发语言·数据结构·算法·面试
hansang_IR1 小时前
【题解】P2217 [HAOI2007] 分割矩阵 [记忆化搜索]
c++·数学·算法·记忆化搜索·深搜
Voyager_42 小时前
算法学习记录03——二叉树学习笔记:从两道题看透后序位置的关键作用
笔记·学习·算法
我搞slam8 小时前
快乐数--leetcode
算法·leetcode·哈希算法
WWZZ20258 小时前
快速上手大模型:机器学习3(多元线性回归及梯度、向量化、正规方程)
人工智能·算法·机器学习·机器人·slam·具身感知
东方佑9 小时前
从字符串中提取重复子串的Python算法解析
windows·python·算法
西阳未落10 小时前
LeetCode——二分(进阶)
算法·leetcode·职场和发展
通信小呆呆10 小时前
以矩阵视角统一理解:外积、Kronecker 积与 Khatri–Rao 积(含MATLAB可视化)
线性代数·算法·matlab·矩阵·信号处理
CoderCodingNo11 小时前
【GESP】C++四级真题 luogu-B4068 [GESP202412 四级] Recamán
开发语言·c++·算法
一个不知名程序员www11 小时前
算法学习入门---双指针(C++)
c++·算法