题目
题解
第一想法
一开始是这样写的,因为测试用例都是两位数的所以能通过,但是如果是3、4位数那就出错了!!
int differenceOfSum(int* nums, int numsSize){
int sum = 0;
int evsum = 0;
for(int i=0;i<numsSize;i++){
sum += nums[i];
evsum += nums[i]/10 + nums[i] % 10;
}
return abs(sum - evsum);
}
正确题解
int differenceOfSum(int* nums, int numsSize){
int sum = 0;
int evsum = 0;
for(int i=0;i<numsSize;i++){
sum += nums[i];
while(nums[i]){
evsum += nums[i] % 10;
nums[i] /= 10;
}
}
return abs(sum - evsum);
}
这样修改之后,假设是一个三位数999,那么取余操作就能拿到个位数9,再将数字/10也就是取整,得到99,再次重复取余操作拿到个位数。。。直到/10之后nums[i]==0。