「这是我参与2022首次更文挑战的第20天,活动详情查看:2022首次更文挑战」
编程世界总是离不了算法
最近在看框架源码时,会有很多算法的实现逻辑,有时候会感到吃力
于是决定蹭着假期,加强算法和数据结构相关的知识
那怎么提升呢?
其实我知道算法这东西没有捷径,多写多练才能提升,于是我开启我的LeetCode刷题之旅
第一阶段目标是:200道,每天1到2篇
为了不乱,本系列文章目录分为三部分:
- 今日题目:xxx
- 我的思路
- 代码实现
今天题目: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:
输入:edges = [[1,2],[5,1],[1,3],[1,4]] 输出:1
提示:
3 <= n <= 105 edges.length == n - 1 edges[i].length == 2 1 <= ui, vi <= n ui != vi 题目数据给出的 edges 表示一个有效的星型图
我的思路
根据题意,n 个几点,组成 n-1 条边。因此,没有孤立的节点 所以,我们只需要判断前 2 个边的交点即可
证明: 假设前两个节点的交点不是中心节点。 将中心节点连接所有所有节点,组成的边数为 n-1; 根据假设条件,至少有一条边不在中心节点边中,因此该星形图的中边数 s >= n; 又 edges.length == n-1; 因此假设不成立
代码实现
/**
* @param {number[][]} edges
* @return {number}
*/
var findCenter = function(edges) {
// 根据题意,n 个几点,组成 n-1 条边。因此,没有孤立的节点
// 所以,我们只需要判断前 2 个边的交点即可
let first = edges[0], second = edges[1];
if(first[0] == second[0] || first[0] == second[1]) {
return first[0]
} else {
return first[1]
}
};
总结
实现方式其实有很多,这里仅供参考~
由于刚开始刷题,也不知道从哪里刷好,如果前辈们有好的建议,希望不吝赐教,感谢🌹