20241222 finished.
This commit is contained in:
		| @@ -384,3 +384,5 @@ mod p3285_find_indices_of_stable_mountains; | |||||||
| mod p3138_minimum_length_of_anagram_concatenation; | mod p3138_minimum_length_of_anagram_concatenation; | ||||||
|  |  | ||||||
| mod p2545_sort_the_students_by_their_kth_score; | mod p2545_sort_the_students_by_their_kth_score; | ||||||
|  |  | ||||||
|  | mod p1387_sort_integers_by_the_power_value; | ||||||
|   | |||||||
							
								
								
									
										64
									
								
								src/problem/p1387_sort_integers_by_the_power_value.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								src/problem/p1387_sort_integers_by_the_power_value.rs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,64 @@ | |||||||
|  | /** | ||||||
|  |  * [1387] Sort Integers by The Power Value | ||||||
|  |  */ | ||||||
|  | pub struct Solution {} | ||||||
|  |  | ||||||
|  | // submission codes start here | ||||||
|  | use std::collections::HashMap; | ||||||
|  |  | ||||||
|  | impl Solution { | ||||||
|  |     pub fn get_kth(lo: i32, hi: i32, k: i32) -> i32 { | ||||||
|  |         let mut memo = HashMap::new(); | ||||||
|  |         memo.insert(1, 0); | ||||||
|  |  | ||||||
|  |         let mut array: Vec<(i32, i32)> = | ||||||
|  |             (lo..=hi).map(|x| (Self::search(x, &mut memo), x)).collect(); | ||||||
|  |         array.sort_unstable(); | ||||||
|  |  | ||||||
|  |         array[k as usize - 1].1 | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     fn search(x: i32, memo: &mut HashMap<i32, i32>) -> i32 { | ||||||
|  |         if let Some(&result) = memo.get(&x) { | ||||||
|  |             return result; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         let result = if x % 2 == 0 { | ||||||
|  |             Self::search(x / 2, memo) + 1 | ||||||
|  |         } else { | ||||||
|  |             Self::search((x * 3 + 1) / 2, memo) + 2 | ||||||
|  |         }; | ||||||
|  |  | ||||||
|  |         memo.insert(x, result); | ||||||
|  |         result | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // submission codes end | ||||||
|  |  | ||||||
|  | #[cfg(test)] | ||||||
|  | mod tests { | ||||||
|  |     use super::*; | ||||||
|  |  | ||||||
|  |     #[test] | ||||||
|  |     fn test_search() { | ||||||
|  |         let mut memo = HashMap::new(); | ||||||
|  |         memo.insert(1, 0); | ||||||
|  |  | ||||||
|  |         assert_eq!(16, Solution::search(7, &mut memo)); | ||||||
|  |         assert_eq!(3, Solution::search(8, &mut memo)); | ||||||
|  |         assert_eq!(19, Solution::search(9, &mut memo)); | ||||||
|  |         assert_eq!(6, Solution::search(10, &mut memo)); | ||||||
|  |         assert_eq!(14, Solution::search(11, &mut memo)); | ||||||
|  |         assert_eq!(9, Solution::search(12, &mut memo)); | ||||||
|  |         assert_eq!(9, Solution::search(13, &mut memo)); | ||||||
|  |         assert_eq!(17, Solution::search(14, &mut memo)); | ||||||
|  |         assert_eq!(17, Solution::search(15, &mut memo)); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     #[test] | ||||||
|  |     fn test_1387() { | ||||||
|  |         assert_eq!(13, Solution::get_kth(12, 15, 2)); | ||||||
|  |         assert_eq!(7, Solution::get_kth(7, 11, 4)); | ||||||
|  |     } | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user