Skip to content

258 各位相加 #60

@sailei1

Description

@sailei1

给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。

示例:

输入: 38
输出: 2
解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。
进阶:
你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题吗?

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-digits
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

/**
 * @param {number} num
 * @return {number}
 */
var addDigits = function(num) { 
    
       //笨法 计算
   // var str = num.toString();
   //  if(str.length === 1) return num;
   //  while(num>9){
   //      num = 0;
   //      for(var i=0;i<str.length;i++){
   //          num += Number(str[i]);
   //      }
   //      str = num.toString();
   //  }
   //  return num;
    
    
    //规律解法 
    //f(x*10+y)=f(x*9+x+y)=f(x+y), 成立当f(x)= x%9
    if(num<10) return num;   
     return num%9==0?9:num%9; 
    
    //return (num-1)%9+1;  //精简版 思路跟上面一样
    
};

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions