zoukankan      html  css  js  c++  java
  • Java实现 LeetCode 258 各位相加

    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;
        }
    }
    
    
    
  • 相关阅读:
    函数间的调用关系
    二分法原理
    图片1
    C函数讲解
    图片2
    图片1
    图片2
    函数间的调用关系
    C函数讲解
    二分法原理
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13075305.html
Copyright © 2011-2022 走看看