Skip to content

Commit 0901ff8

Browse files
committed
2181. Merge Nodes in Between Zeros: RETRY
1 parent 8d57e63 commit 0901ff8

File tree

2 files changed

+92
-0
lines changed

2 files changed

+92
-0
lines changed

src/solution/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1648,3 +1648,4 @@ mod s2177_find_three_consecutive_integers_that_sum_to_a_given_number;
16481648
mod s2178_maximum_split_of_positive_even_integers;
16491649
mod s2179_count_good_triplets_in_an_array;
16501650
mod s2180_count_integers_with_even_digit_sum;
1651+
mod s2181_merge_nodes_in_between_zeros;
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
/**
2+
* [2181] Merge Nodes in Between Zeros
3+
*
4+
* You are given the head of a linked list, which contains a series of integers separated by 0's. The beginning and end of the linked list will have Node.val == 0.
5+
* For every two consecutive 0's, merge all the nodes lying in between them into a single node whose value is the sum of all the merged nodes. The modified list should not contain any 0's.
6+
* Return the head of the modified linked list.
7+
*
8+
* Example 1:
9+
* <img alt="" src="https://assets.leetcode.com/uploads/2022/02/02/ex1-1.png" style="width: 600px; height: 41px;" />
10+
* Input: head = [0,3,1,0,4,5,2,0]
11+
* Output: [4,11]
12+
* Explanation:
13+
* The above figure represents the given linked list. The modified list contains
14+
* - The sum of the nodes marked in green: 3 + 1 = 4.
15+
* - The sum of the nodes marked in red: 4 + 5 + 2 = 11.
16+
*
17+
* Example 2:
18+
* <img alt="" src="https://assets.leetcode.com/uploads/2022/02/02/ex2-1.png" style="width: 600px; height: 41px;" />
19+
* Input: head = [0,1,0,3,0,2,2,0]
20+
* Output: [1,3,4]
21+
* Explanation:
22+
* The above figure represents the given linked list. The modified list contains
23+
* - The sum of the nodes marked in green: 1 = 1.
24+
* - The sum of the nodes marked in red: 3 = 3.
25+
* - The sum of the nodes marked in yellow: 2 + 2 = 4.
26+
*
27+
*
28+
* Constraints:
29+
*
30+
* The number of nodes in the list is in the range [3, 2 * 10^5].
31+
* 0 <= Node.val <= 1000
32+
* There are no two consecutive nodes with Node.val == 0.
33+
* The beginning and end of the linked list have Node.val == 0.
34+
*
35+
*/
36+
pub struct Solution {}
37+
use crate::util::linked_list::{to_list, ListNode};
38+
39+
// problem: https://leetcode.com/problems/merge-nodes-in-between-zeros/
40+
// discuss: https://leetcode.com/problems/merge-nodes-in-between-zeros/discuss/?currentPage=1&orderBy=most_votes&query=
41+
42+
// submission codes start here
43+
44+
// Definition for singly-linked list.
45+
// #[derive(PartialEq, Eq, Clone, Debug)]
46+
// pub struct ListNode {
47+
// pub val: i32,
48+
// pub next: Option<Box<ListNode>>
49+
// }
50+
//
51+
// impl ListNode {
52+
// #[inline]
53+
// fn new(val: i32) -> Self {
54+
// ListNode {
55+
// next: None,
56+
// val
57+
// }
58+
// }
59+
// }
60+
impl Solution {
61+
pub fn merge_nodes(head: Option<Box<ListNode>>) -> Option<Box<ListNode>> {
62+
Some(Box::new(ListNode::new(0)))
63+
}
64+
}
65+
66+
// submission codes end
67+
68+
#[cfg(test)]
69+
mod tests {
70+
use super::*;
71+
72+
#[test]
73+
#[ignore]
74+
fn test_2181_example_1() {
75+
let head = linked![0, 3, 1, 0, 4, 5, 2, 0];
76+
77+
let result = linked![4, 11];
78+
79+
assert_eq!(Solution::merge_nodes(head), result);
80+
}
81+
82+
#[test]
83+
#[ignore]
84+
fn test_2181_example_2() {
85+
let head = linked![0, 1, 0, 3, 0, 2, 2, 0];
86+
87+
let result = linked![1, 3, 4];
88+
89+
assert_eq!(Solution::merge_nodes(head), result);
90+
}
91+
}

0 commit comments

Comments
 (0)