Skip to content

Commit

Permalink
补充一个single-number的单纯的数学题解
Browse files Browse the repository at this point in the history
  • Loading branch information
nt-sivan committed May 16, 2024
1 parent ab0973c commit 5881e33
Showing 1 changed file with 16 additions and 0 deletions.
16 changes: 16 additions & 0 deletions single-number/src/solution.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,22 @@ impl Solution {
// 任何数与0异或等于它本身: a ^ 0 = a
// 任何数与它自己异或等于0: a ^ a = 0
// 异或运算满足交换律和结合律: a ^ b ^ a = (a ^ a) ^ b = 0 ^ b = b
// 数学运算+hashmap
pub fn single_number_math(nums: Vec<i32>) -> i32 {
let mut sum = 0;
let mut unique_sum = 0;
let mut seen = HashMap::new();

for num in nums {
sum += num;
if !seen.contains_key(&num) {
unique_sum += num;
seen.insert(num, true);
}
}

(unique_sum * 2 - sum) as i32
}
pub fn single_number(nums: Vec<i32>) -> i32 {
let mut once_number = nums[0];
if nums.clone().len() == 1 {
Expand Down

0 comments on commit 5881e33

Please sign in to comment.