给你一个正整数 num ,请你统计并返回 小于或等于 num 且各位数字之和为 偶数 的正整数的数目。
正整数的 各位数字之和 是其所有位上的对应数字相加的结果。
示例 1:
输入:num = 4
输出:2
解释:
只有 2 和 4 满足小于等于 4 且各位数字之和为偶数。
示例 2:
输入:num = 30
输出:14
解释:
只有 14 个整数满足小于等于 30 且各位数字之和为偶数,分别是:
2、4、6、8、11、13、15、17、19、20、22、24、26 和 28 。
提示:
1 <= num <= 1000
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/count-integers-with-even-digit-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
简单到没意思两天,然后难到不会三天,接着又是简单到没意思,神奇。
由于数据量不大,先暴力解一遍试试
代码如下:
class Solution { public int countEven(int num) { int res = 0; for (int i = 1; i <= num; i ++) { int x = i; int sum = 0; while (x != 0) { sum += x % 10; x /= 10; } if (sum % 2 == 0) { res ++; } } return res; } }
运行结果:
可以利用数学方法进行优化,分析明天有时间了补上。
代码如下:
class Solution { public int countEven(int num) { int y = num / 10; int x = num % 10; int res = y * 5, ySum = 0; while (y != 0) { ySum += y % 10; y /= 10; } if (ySum % 2 == 0) { res += x / 2 + 1; } else { res += (x + 1) / 2; } return res - 1; } }
标签:力扣,各位,10,int,res,偶数,---,2023.1,num From: https://www.cnblogs.com/allWu/p/17032041.html