一、前言
本系列主要讲解和分析力扣习题,所以的习题均来自于力扣官网题库 - 力扣 (LeetCode) 全球极客挚爱的技术成长平台
二、哈沙德数
1. 哈沙德数
如果一个整数能够被其各个数位上的数字之和整除,则称之为哈沙德数 (Harshad number)。给你一个整数 x
如果 x
是 哈沙德数 ,则返回x
各个数位上的数字之和,否则,返回-1
。
示例 1:
输入: x = 18
输出: 9
解释:
x
各个数位上的数字之和为 9
。18
能被 9
整除。因此 18
是哈沙德数,答案是 9
。
示例 2:
输入: x = 23
输出: -1
解释:
x
各个数位上的数字之和为 5
。23
不能被 5
整除。因此 23
不是哈沙德数,答案是 -1
。
提示:
1 <= x <= 100
2. 思路及算法
考虑到所给的数x并不大,可以直接采用暴力算法。
优先考虑1和100的情况,再计算 x 的数位之和 t,判断 x 是否能被 st整除,若能,则是哈沙德数,返回 t,否则返回 −1
objectivec
int sumOfTheDigitsOfHarshadNumber(int x) {
if(x == 1 || x==100){
return 1;
}
int a,b,t;
a = x % 10;
b = x /10;
t =a+b;
if(x % t ==0){
return t;
}else{
return -1;
}
}
结果分析:
3. 复杂度分析
-
时间复杂度:O(logx)。
-
空间复杂度:O(1)。