精華區beta Marginalman 關於我們 聯絡資訊
2. Add Two Numbers 兩個LinkedList 做從個位數開始的大數加法 思路: 以下都不是重點 重點是Rust操作指標真的很繁瑣 從dummy_head的下一位開始存結果 while以此node當基準跑 每次先加上同index的l1跟l2的value (已經沒node的就不加) 有value可以加的話 加完l1 l2分別進next node 然後計算是否進位 建立並進入下一個結果node Code: impl Solution { pub fn add_two_numbers( mut l1: Option<Box<ListNode>>, mut l2: Option<Box<ListNode>>, ) -> Option<Box<ListNode>> { let mut dummy_head = Box::new(ListNode::new(0)); let mut cur = &mut dummy_head; let mut carry = 0; while l1.is_some() || l2.is_some() || carry != 0 { let mut sum = carry + match l1 { Some(node) => { l1 = node.next; node.val } None => 0, } + match l2 { Some(node) => { l2 = node.next; node.val } None => 0, }; carry = sum / 10; cur.next = Some(Box::new(ListNode::new(sum % 10))); cur = cur.next.as_mut().unwrap(); } dummy_head.next } } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.251.123.162 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1696500132.A.D0B.html
wwndbk: 大師 10/05 19:01