3959. 判定好整数
题目描述
给你一个正整数 n。
令 digitSum 表示 n 的各位数字之和,令 squareSum 表示 n 的各位数字平方之和。
如果一个整数满足 squareSum - digitSum >= 50,则称它是 好整数 。
如果 n 是好整数,返回 true;否则,返回 false。
示例 1:
输入: n = 1000
输出: false
解释:
- 1000 的数字为 1、0、0 和 0。
digitSum为1 + 0 + 0 + 0 = 1。squareSum为12 + 02 + 02 + 02 = 1。squareSum - digitSum为1 - 1 = 0。由于 0 小于 50,因此输出false。
示例 2:
输入: n = 19
输出: true
解释:
- 19 的数字为 1 和 9。
digitSum为1 + 9 = 10。squareSum为12 + 92 = 1 + 81 = 82。squareSum - digitSum为82 - 10 = 72。由于 72 大于等于 50,因此输出true。
提示:
1 <= n <= 109
解法
方法一:模拟
我们用一个变量 \(s\) 来记录 \(n\) 的各位数字的平方和减去各位数字之和的结果,如果 \(s\) 大于等于 50,则返回 \(\textit{true}\),否则返回 \(\textit{false}\)。
时间复杂度 \(O(\log n)\),其中 \(\log n\) 是数字 \(n\) 的位数。空间复杂度 \(O(1)\)。
1 2 3 4 5 6 7 | |
1 2 3 4 5 6 7 8 9 10 | |
1 2 3 4 5 6 7 8 9 10 11 | |
1 2 3 4 5 6 7 8 | |
1 2 3 4 5 6 7 8 | |