Java实现 LeetCode 258 各位相加
2023-09-14 08:58:06 时间
258. 各位相加
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。
示例:
输入: 38
输出: 2
解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。
进阶:
你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题吗?
找规律。假设 num = 384 = 3 * 100 + 8 * 10 + 4
第一轮计算 sum = 15 = 3 + 8 + 4
差值 = 3 * 99 + 8 * 9 = (3 * 11 + 8) * 9 即差值为9的倍数
第二轮计算 num = 15 = 1 * 10 + 5
sum = 6 = 1 * 0 + 5
差值 = 9
由此得出规律:num % 9
注意:需要注意 9 的整倍数最终结果应该返回9,小于10的数直接返回
class Solution {
public int addDigits(int num) {
return (num-1)%9+1;
}
}
相关文章
- [Java 基础] 使用java.util.zip包压缩和解压缩文件
- Java实现 LeetCode 789 逃脱阻碍者(曼哈顿距离)
- Java实现 LeetCode 747 至少是其他数字两倍的最大数(暴力)
- Java实现 LeetCode 739 每日温度(暴力循环)
- Java实现 LeetCode 593 有效的正方形(判断正方形)
- Java实现 LeetCode 575 分糖果(看看是你的长度小还是我的种类少)
- Java实现 LeetCode 535 TinyURL 的加密与解密(位运算加密)
- Java实现 LeetCode 504 七进制数
- Java实现 LeetCode 508 出现次数最多的子树元素和
- Java实现 LeetCode 498 对角线遍历
- Java实现 LeetCode 452 用最少数量的箭引爆气球
- Java实现 LeetCode 438 找到字符串中所有字母异位词
- Java实现 LeetCode 427 建立四叉树
- Java实现 LeetCode 371 两整数之和
- Java实现 LeetCode 330 按要求补齐数组
- Java实现 LeetCode 329 矩阵中的最长递增路径
- Java实现 LeetCode 242 有效的字母异位词
- Java实现 LeetCode 258 各位相加
- Java实现 LeetCode 206 反转链表
- Java实现 LeetCode 188 买卖股票的最佳时机 IV
- Java实现 LeetCode 140 单词拆分 II(二)
- Java实现 LeetCode 137 只出现一次的数字 II(二)
- Java实现 LeetCode 114 二叉树展开为链表
- Java实现 LeetCode 41 缺失的第一个正数
- Java实现 LeetCode 14 最长公共前缀
- Java实现LeetCode_0027_RemoveElement