diff --git a/src/solution/mod.rs b/src/solution/mod.rs index 8f65d40..9c2e870 100644 --- a/src/solution/mod.rs +++ b/src/solution/mod.rs @@ -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; diff --git a/src/solution/s1791_find_center_of_star_graph.rs b/src/solution/s1791_find_center_of_star_graph.rs new file mode 100644 index 0000000..1fd102f --- /dev/null +++ b/src/solution/s1791_find_center_of_star_graph.rs @@ -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: + * + * 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>) -> 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); + } +}