zoukankan      html  css  js  c++  java
  • LeetCode--258--各位相加*

    问题描述:

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

    示例:

    输入: 38
    输出: 2 
    解释: 各位相加的过程为3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。
    

    进阶:
    你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题吗?

    方法1:

     1 class Solution(object):
     2     def addDigits(self, num):
     3         """
     4         :type num: int
     5         :rtype: int
     6         """
     7         num_list = []
     8         if num // 10 == 0:
     9             return num
    10         num_list = self.jisuan(num,num_list)
    11         while len(num_list) != 1:
    12             res = 0
    13             for i in num_list:
    14                 res += i
    15             num_list = self.jisuan(res,[])
    16         return res       
    17     def jisuan(self,num,num_list):#把[38]变成[3,8]
    18         while num !=0:
    19             g = num %10
    20             num = num // 10
    21             num_list.append(g)
    22         return num_list

    官方:amazing

    1 class Solution(object):
    2     def addDigits(self, num):
    3         """
    4         :type num: int
    5         :rtype: int
    6         """
    7         s = num % 9
    8         return s if num==0 or s!=0 else 9

    官方2:

    1 class Solution(object):
    2     def addDigits(self, num):
    3         a = str(num)
    4         while len(a)-1:
    5             a = sum([int(i) for i in str(a)])
    6             a = str(a)
    7         return int(a)

    2018-09-22 16:56:58

  • 相关阅读:
    一LWIP学习笔记之数据包管理
    智能家居的发展趋势
    break和continue的区别
    TCP与UDP区别总结
    C语言变量和函数命名规范
    常用电子元件
    php 1018
    php 1016
    mysql 应用查询 三个表(学生表,课程表,学生课程分数表) student, course, score表
    mysql 聚合函数
  • 原文地址:https://www.cnblogs.com/NPC-assange/p/9690505.html
Copyright © 2011-2022 走看看