Leecode刷题C语言之判断是否可以赢得数字游戏
执行结果:通过
执行用时和内存消耗如下:
bool canAliceWin(int* nums, int numsSize) {
int single_digit_sum = 0;
int double_digit_sum = 0;
for (int i = 0; i < numsSize; i++) {
if (nums[i] < 10) {
single_digit_sum += nums[i];
} else {
double_digit_sum += nums[i];
}
}
return single_digit_sum != double_digit_sum;
}
解题思路:
- 初始化变量:
single_digit_sum
:用于存储所有个位数之和。double_digit_sum
:用于存储所有两位数之和。
- 遍历数组:
- 遍历给定的整数数组
nums
,数组的大小为numsSize
。 - 对于数组中的每一个元素
nums[i]
,根据它的值进行分类处理:- 如果
nums[i]
小于10(即是个位数),则将其加到single_digit_sum
中。 - 如果
nums[i]
大于或等于10(即是两位数),则将其加到double_digit_sum
中。
- 如果
- 遍历给定的整数数组
- 判断胜负条件:
- 比较
single_digit_sum
和double_digit_sum
的值。 - 如果这两个和不相等(
single_digit_sum != double_digit_sum
),则函数返回true
,表示Alice可以获胜。 - 如果这两个和相等(
single_digit_sum == double_digit_sum
),则函数返回false
,表示Alice不能获胜。
- 比较
总结:
- 函数的核心思想是通过计算数组中所有个位数之和与所有两位数之和,并比较这两个和是否相等来判断Alice是否能获胜。
- 如果个位数之和与两位数之和不同,则认为Alice有某种策略可以获胜(这取决于具体的游戏规则,虽然代码中没有明确给出)。
- 如果两个和相等,则Alice无法在这种条件下获胜。