From 742a5b6137e8063ee2687e9e1043345022f4ec5c Mon Sep 17 00:00:00 2001 From: li-chx Date: Wed, 19 Nov 2025 09:24:56 +0800 Subject: [PATCH] =?UTF-8?q?2154.=20=E5=B0=86=E6=89=BE=E5=88=B0=E7=9A=84?= =?UTF-8?q?=E5=80=BC=E4=B9=98=E4=BB=A5=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.rs | 53 ++++++++--------------------------------------------- 1 file changed, 8 insertions(+), 45 deletions(-) diff --git a/src/main.rs b/src/main.rs index bd2ada0..4de2070 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,57 +1,20 @@ -use std::collections::HashSet; -use crate::list::{make_list, ListNode}; +use std::collections::{HashSet}; mod arr; mod list; - struct Solution; - impl Solution { - pub fn modified_list(nums: Vec, head: Option>) -> Option> { - let mut set:HashSet = nums.into_iter().collect(); - let mut cur = &head; - while let Some(node) = cur { - if set.contains(&node.val) { - cur = &node.next; - }else { - break; - } + pub fn find_final_value(nums: Vec, original: i32) -> i32 { + let mut original = original; + let set = nums.into_iter().collect::>(); + while set.contains(&original) { + original *= 2; } - let mut dummy_head = Box::new(ListNode{val:0, next: cur.clone()}); - let mut last = &mut dummy_head.next; - - // let mut cur = &mut(last.as_mut()?.next); - while let Some(node) = last { - if node.next.is_none() {break;} - if set.contains(&node.next.as_ref().as_ref()?.val) { - // this could be a shit! - let mut next_node = last.as_mut().unwrap().next.as_mut().unwrap().next.take(); - let mut st = false; - while let Some(nd) = &next_node { - if set.contains(&nd.as_ref().val) { - next_node = next_node.as_mut().unwrap().next.take(); - }else { - st = true; - break; - } - } - if !st { - last.as_mut().unwrap().next = None; - }else { - last.as_mut().unwrap().next = next_node; - } - last = &mut last.as_mut().unwrap().next; - } else { - last = &mut last.as_mut().unwrap().next; - } - } - dummy_head.next + original } } fn main() { - let nums = vec![1]; - let head = make_list(vec![1,2,1,2,1,2]); - let result = Solution::modified_list(nums, head); + let result = Solution::find_final_value(vec![5,3,6,1,12],3); println!("{:?}", result); }