2020-ARTS-打卡第七天
Algorithm 题目描述 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。258.各位相加 Example 输入: 38 输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。 题目解答 解答一(递归) public class AddDigitsV1 { public int addDigits(int num) { if(num < 10) return num; return addDigits(num % 10 + num / 10); } } 此解法的时间复杂度为O(log(n)),空间复杂度为O(1) 使用递归要满足的条件 一个任务可以拆分成多个子任务 每个任务都有相似的处理步骤(流程) 存在终止条件 解答二(模9法) public class addDigitsV2 { public int addDigits(int num) { return (num - 1) % 9 + 1; } } 查找规律发现可以以%9来得到答案,但是对于整除9的结果就不行了,所以还要采用借1还1的方式来处理。此解的时间复杂度为O(1),空间复杂度为O(1) ...