前言
刷题坚持每一天,以下题目引用自:力扣(LeetCode)
💎一、题目一
🏆1.题目描述
原题链接:1791. 找出星型图的中心节点
有一个无向的 星型 图,由 n 个编号从 1 到 n 的节点组成。星型图有一个 中心 节点,并且恰有 n - 1 条边将中心节点与其他每个节点连接起来。
给你一个二维整数数组 edges ,其中 edges[i] = [ui, vi] 表示在节点 ui 和 vi 之间存在一条边。请你找出并返回 edges 所表示星型图的中心节点。
示例 1:
输入:edges = [[1,2],[2,3],[4,2]]
输出:2
解释:如上图所示,节点 2 与其他每个节点都相连,所以节点 2 是中心节点。
🏆2.解题思路
🔑思路:
因为是无向的只要有一个节点两次那么这个节点就是中心点。
🏆3.代码详解
int findCenter(int** edges, int edgesSize, int* edgesColSize){
return (edges[0][0] == edges[1][0] || edges[0][0] == edges[1][1]) ? edges[0][0] : edges[0][1];
}
💎二、题目二
🏆1.题目描述
原题链接:797. 所有可能的路径
给你一个有 n 个节点的 有向无环图(DAG),请你找出所有从节点 0 到节点 n-1 的路径并输出(不要求按特定顺序)
graph[i] 是一个从节点 i 可以访问的所有节点的列表(即从节点 i 到节点 graph[i][j]存在一条有向边)。
示例 1:
输入:graph = [[1,2],[3],[3],[]]
输出:[[0,1,3],[0,2,3]]
解释:有两条路径 0 -> 1 -> 3 和 0 -> 2 -> 3
🏆2.解题思路
🔑思路:
暴力深搜,找从开始到结尾的所有路径。
🏆3.代码详解
void dfs(int x, int n, int** ans, int* stack, int* stacksize, int** graph, int* graphColSize, int* returnSize, int** returnColumnSizes){
if(x == n){
int* tmp = malloc(sizeof(int) * (*stacksize));
memcpy(tmp, stack, sizeof(int) * (*stacksize));
ans[*returnSize] = tmp;
(*returnColumnSizes)[(* returnSize)++] = (*stacksize);
}
for(int i = 0; i < graphColSize[x]; ++i){
int y = graph[x][i];
stack[(*stacksize)++] = y;
dfs(y, n, ans, stack, stacksize, graph, graphColSize, returnSize, returnColumnSizes);
--(*stacksize);
}
}
int** allPathsSourceTarget(int** graph, int graphSize, int* graphColSize, int* returnSize, int** returnColumnSizes){
* returnSize = 0;
* returnColumnSizes = (int*)malloc(sizeof(int)*20000);
int** ans = (int**)malloc(sizeof(int*)*20000);
int stack[15];
int stacksize = 0;
stack[stacksize++] = 0;
dfs(0, graphSize-1, ans, stack, &stacksize, graph, graphColSize, returnSize, returnColumnSizes);
return ans;
}
💎五、星球推荐
星球链接:英雄算法联盟
星球里有什么?
【朋友圈】一个极致精准的自律、编程、算法的小圈子。
【算法集训】以月为单位组织算法集训,每天四题,风雨无阻。
【排行榜】每天、每周都会有榜单,激励大家不断进步,不断成长。
【个人规划】每个人都写好自己的规划,也可以查看他人的规划,时刻警醒自己不掉队。
【打卡挑战】每日一题打卡、每日早起打卡、算法集训打卡、规划完成情况打卡。
在星球里做什么?
目前星球人数达到450+,在星球里你能够遇到一群志同道合之人,因为都是花钱进来的,你不会看到任何浑水摸鱼的人,每个人都有自己的每月规划,星主每月都会组织算法集训,每天一起刷题,你可以看到别人的解题报告,取其之长,补己之短。