前言
欢迎大家积极在评论区留言发表自己的看法,知无不言,言无不尽,养成每天刷题的习惯,也可以自己发布优质的解题报告,供社区一同鉴赏,吸引一波自己的核心粉丝。
今天是五月集训第二十七天:图
一、练习题目
二、算法思路
- 1、1791. 找出星型图的中心节点:第一题不难终于又有水题啦!
- 2、797. 所有可能的路径:暴力搜素递归,这个题目不难。
- 3、959. 由斜杠划分区域:😢
- 4、851. 喧闹和富有:😢
三、源码剖析
// 1791. 找出星型图的中心节点
class Solution {
public:
int findCenter(vector<vector<int>>& edges) {
int n = edges[0][0];
if (n == edges[1][0] || n == edges[1][1]) {
return n;
}
return edges[0][1];
}
};
- 1、中间结点一定和所有结点相连,我们直接看两条边,其中一个两条边都有的结点就是中心结点。
// 797. 所有可能的路径
class Solution {
vector<vector<int>> ret;
vector<int> stk;
public:
void dfs(int n, vector<vector<int>>& graph, int node) {
if(node == n - 1) {
ret.push_back(stk); //(1)
return ;
}
for(int i = 0; i < graph[node].size(); ++i) {
stk.push_back(graph[node][i]);
dfs(n, graph, graph[node][i]); //(2)
stk.pop_back(); //(3)
}
}
vector<vector<int>> allPathsSourceTarget(vector<vector<int>>& graph) {
ret.clear();
stk.clear();
int n = graph.size();
stk.push_back(0);
dfs(n, graph, 0);
return ret;
}
};
- 1、暴力从0开始搜索到n-1结束;
- 2、一层层的递归搜索;
- 3、没搜索完一个结点记得要回退,不然答案重复记录有问题的。
// 1475. 商品折扣后的最终价格
- 1、
// 2248.多个数组求交集
- 1、