Skip to content

Commit

Permalink
1791. Find Center of Star Graph: AC
Browse files Browse the repository at this point in the history
  • Loading branch information
tan-wei committed Dec 5, 2024
1 parent b8f0147 commit 584ad87
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/solution/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1349,3 +1349,4 @@ mod s1785_minimum_elements_to_add_to_form_a_given_sum;
mod s1786_number_of_restricted_paths_from_first_to_last_node;
mod s1787_make_the_xor_of_all_segments_equal_to_zero;
mod s1790_check_if_one_string_swap_can_make_strings_equal;
mod s1791_find_center_of_star_graph;
69 changes: 69 additions & 0 deletions src/solution/s1791_find_center_of_star_graph.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
/**
* [1791] Find Center of Star Graph
*
* There is an undirected star graph consisting of n nodes labeled from 1 to n. A star graph is a graph where there is one center node and exactly n - 1 edges that connect the center node with every other node.
* You are given a 2D integer array edges where each edges[i] = [ui, vi] indicates that there is an edge between the nodes ui and vi. Return the center of the given star graph.
*
* Example 1:
* <img alt="" src="https://assets.leetcode.com/uploads/2021/02/24/star_graph.png" style="width: 331px; height: 321px;" />
* Input: edges = [[1,2],[2,3],[4,2]]
* Output: 2
* Explanation: As shown in the figure above, node 2 is connected to every other node, so 2 is the center.
*
* Example 2:
*
* Input: edges = [[1,2],[5,1],[1,3],[1,4]]
* Output: 1
*
*
* Constraints:
*
* 3 <= n <= 10^5
* edges.length == n - 1
* edges[i].length == 2
* 1 <= ui, vi <= n
* ui != vi
* The given edges represent a valid star graph.
*
*/
pub struct Solution {}

// problem: https://leetcode.com/problems/find-center-of-star-graph/
// discuss: https://leetcode.com/problems/find-center-of-star-graph/discuss/?currentPage=1&orderBy=most_votes&query=

// submission codes start here

impl Solution {
pub fn find_center(edges: Vec<Vec<i32>>) -> i32 {
if let Some(x) = edges[1].iter().position(|x| *x == edges[0][0]) {
edges[1][x]
} else {
edges[0][1]
}
}
}

// submission codes end

#[cfg(test)]
mod tests {
use super::*;

#[test]
fn test_1791_example_1() {
let edges = vec![vec![1, 2], vec![2, 3], vec![4, 2]];

let result = 2;

assert_eq!(Solution::find_center(edges), result);
}

#[test]
fn test_1791_example_2() {
let edges = vec![vec![1, 2], vec![5, 1], vec![1, 3], vec![1, 4]];

let result = 1;

assert_eq!(Solution::find_center(edges), result);
}
}

0 comments on commit 584ad87

Please sign in to comment.