文档章节

数值的每位数相加最终返回各位数 Add Digits

叶枫啦啦
 叶枫啦啦
发布于 2017/06/26 17:13
字数 361
阅读 6
收藏 0

题目:

Given a non-negative integer num, repeatedly add all its digits until the result has only one digit.

For example:

Given num = 38, the process is like: 3 + 8 = 111 + 1 = 2. Since 2 has only one digit, return it.

Follow up:
Could you do it without any loop/recursion in O(1) runtime?

解决:

① 将每位数相加,直到它们的和为个位数为止。耗时3ms。

public class Solution {
    public int addDigits(int num) {
        while(num > 9){
            int sum = 0;
            while(num > 0){
                sum += (num % 10);
                num /= 10;
            }
            num = sum;
        }
        return num;
    }
}

②我们先来观察1到20的所有的树根:

1    1
2    2
3    3
4    4
5    5
6    6
7    7
8    8    
9    9    
10    1
11    2
12    3    
13    4
14    5
15    6
16    7
17    8
18    9
19    1
20    2

根据上面的列举,我们可以得出规律,每9个一循环,所有大于9的数的树根都是对9取余,那么对于等于9的数对9取余就是0了,为了得到其本身,而且同样也要对大于9的数适用,我们就用(n-1)%9+1这个表达式来包括所有的情况,所以解法如下,耗时2ms:

public class Solution {
    public int addDigits(int num) {
        if (num <= 9) {
            return num;
        }
        return (num -1) % 9 + 1;
    }
}

③ 同一个思路

public class Solution {
    public int addDigits(int num) {
        return num % 9 == 0 ? (num == 0 ? 0 : 9) : num % 9;
    }
}

© 著作权归作者所有

共有 人打赏支持
叶枫啦啦
粉丝 12
博文 569
码字总数 354997
作品 0
海淀
私信 提问
【leetcode】刷题(python & java)解析:【两数相加】 重点【链表】

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/meiqi0538/article/details/82945167 给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个...

皮乾东
10/05
0
0
LeetCode算法题-Add Digits(Java实现-3种解法)

这是悦乐书的第199次更新,第207篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第63题(顺位题号是258)。给定非负整数num,重复添加其所有数字,直到结果只有一位数。例如:...

小川94
12/12
0
0
0001 + 1 = 0002,01 + 1 = 02

package com.test.test; / @ClassName: IntDigitPadded @Description: 数字位数补齐,如果此数小于定义总位数,则前面补零 @author PineTree @date 2014年12月19日 下午3:57:38 @version / ...

spml
2014/12/19
0
0
357. Count Numbers with Unique Digits

问题 给定一个非负整数n,数一下在0<=x<10^n之间有多少个数是unique digit(每个位数都不相同) Input: 2 Output: 91 Explanation: 0-99有100个数,去除9个位数相同的值{11,22,33,44,55,66,...

PilgrimHui
10/10
0
0
ZOJ Problem Set - 1828 Fibonacci Numbers(大数相加)

Fibonacci Numbers Time Limit: 2 Seconds Memory Limit: 65536 KB A Fibonacci sequence is calculated by adding the previous two members of the sequence, with the first two members ......

hushhw
2017/11/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

hanlp在Python环境中的安装失败后的解决方法

Hanlp是由一系列模型与算法组成的javag工具包,目标是普及自然语言处理再生环境中的应用。有很多人在安装hanlp的时候会遇到安装失败的情况,下面就是某大神的分享的在python环境中安装失败的...

左手的倒影
23分钟前
1
0
【更新】Infragistics Ultimate UI for WPF v18.2(二):分类图

下载Infragistics Ultimate UI for WPF最新版本 Infragistics Ultimate UI for WPF是一款提供高速的网格和图表,轻松创建仿Office应用程序的WPF界面框架,从广度和深度两方面使得开发者在缩短...

电池盒
23分钟前
1
0
android沉浸式状态栏封装—教你玩出新花样

项目中我们有时候都要用的透明状态栏(这里也成沉浸式状态栏),今天介绍一个gyf-dev写的一个封装状态栏开源框架 效果图如下: 正文 从Android4.4开始,才可以实现状态栏着色,并且从5.0开始...

终端研发部
24分钟前
1
0
Java关键字之transient、native

transient Java中提供Serilizable接口,实现该接口的对象就可以被序列化。如果这个类的有些属性不需要被序列化,使用transient关键修饰字段即可。 native native关键字说明其修饰的方法是一个...

勇敢的飞石
26分钟前
1
0
canal 修改mysql数据后Java客户端无反应的问题解决方案

canal client例子: package com.study.canal;import java.net.InetSocketAddress;import java.util.List;import com.alibaba.otter.canal.client.CanalConnector;import com.al......

xtof
26分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部