20250504 finished.
This commit is contained in:
		@@ -632,3 +632,5 @@ mod p2071_maximum_number_of_tasks_you_can_assign;
 | 
				
			|||||||
mod p838_push_dominoes;
 | 
					mod p838_push_dominoes;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
mod p1007_minimum_domino_rotations_for_equal_row;
 | 
					mod p1007_minimum_domino_rotations_for_equal_row;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					mod p1128_number_of_equivalent_domino_pairs;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										58
									
								
								src/problem/p1128_number_of_equivalent_domino_pairs.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								src/problem/p1128_number_of_equivalent_domino_pairs.rs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * [1128] Number of Equivalent Domino Pairs
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					pub struct Solution {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// submission codes start here
 | 
				
			||||||
 | 
					use std::collections::HashMap;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					impl Solution {
 | 
				
			||||||
 | 
					    pub fn num_equiv_domino_pairs(dominoes: Vec<Vec<i32>>) -> i32 {
 | 
				
			||||||
 | 
					        let mut map = HashMap::new();
 | 
				
			||||||
 | 
					        let mut result = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for card in dominoes.iter() {
 | 
				
			||||||
 | 
					            let sum = card[0] * 10 + card[1];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if let Some(count) = map.get(&sum) {
 | 
				
			||||||
 | 
					                result += *count;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            let entry = map.entry(sum).or_insert(0);
 | 
				
			||||||
 | 
					            *entry += 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            let reverse_sum = card[1] * 10 + card[0];
 | 
				
			||||||
 | 
					            if reverse_sum != sum {
 | 
				
			||||||
 | 
					                let entry = map.entry(card[1] * 10 + card[0]).or_insert(0);
 | 
				
			||||||
 | 
					                *entry += 1;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        result
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// submission codes end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#[cfg(test)]
 | 
				
			||||||
 | 
					mod tests {
 | 
				
			||||||
 | 
					    use super::*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #[test]
 | 
				
			||||||
 | 
					    fn test_1128() {
 | 
				
			||||||
 | 
					        assert_eq!(
 | 
				
			||||||
 | 
					            1,
 | 
				
			||||||
 | 
					            Solution::num_equiv_domino_pairs(vec![vec![1, 2], vec![2, 1], vec![3, 4], vec![5, 6]])
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					        assert_eq!(
 | 
				
			||||||
 | 
					            3,
 | 
				
			||||||
 | 
					            Solution::num_equiv_domino_pairs(vec![
 | 
				
			||||||
 | 
					                vec![1, 2],
 | 
				
			||||||
 | 
					                vec![1, 2],
 | 
				
			||||||
 | 
					                vec![1, 1],
 | 
				
			||||||
 | 
					                vec![1, 2],
 | 
				
			||||||
 | 
					                vec![2, 2]
 | 
				
			||||||
 | 
					            ])
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user