avatar

Rust algorithm

AI Summary
The provided Rust algorithm solves

寻找独特数字卡片#

在一个班级中,每位同学都拿到了一张卡片,上面有一个整数。有趣的是,除了一个数字之外,所有的数字都恰好出现了两次。现在需要你帮助班长小 C 快速找到那个拿了独特数字卡片的同学手上的数字是什么

rust
fn solution(inp: Vec<i32>) -> i32 {
let mut result = 0;
for i in inp.iter() {
result = result ^ i;
}
result
}

数字分组求偶数和#

小 M 面对一组从 1 到 9 的数字,这些数字被分成多个小组,并从每个小组中选择一个数字组成一个新的数。目标是使得这个新数的各位数字之和为偶数。任务是计算出有多少种不同的分组和选择方法可以达到这一目标。 numbers: 一个由多个整数字符串组成的列表,每个字符串可以视为一个数字组。小 M 需要从每个数字组中选择一个数字。 例如对于[123, 456, 789],14 个符合条件的数为:147 149 158 167 169 248 257 259 268 347 349 358 367 369

rust
fn solution(numbers: &[i32]) -> i32 {
let mut groups = Vec::new();
for num in numbers.iter() {
let chats_arr: Vec<i32> = num
.to_string()
.chars()
.map(|c| c.to_digit(10).unwrap() as i32)
.collect::<Vec<i32>>();
groups.push(chats_arr);
}
fn calc_nums(group: &Vec<Vec<i32>>, index: usize, current_sum: i32, count: &mut i32) {
if index == group.len() {
if current_sum % 2 == 0 {
*count = *count + 1;
}
return;
}
for &num in group[index].iter() {
calc_nums(group, index + 1, num + current_sum, count);
}
}
let mut count = 0;
calc_nums(&mut groups, 0, 0, &mut count);
return count;
}