刷题专栏(十五):各位相加

63 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第15天,点击查看活动详情

前言

刷题专栏到目前已经是第十五篇了,欢迎大家来关注我的刷题专栏,一起来刷题。

今天的这道题终于不再是二叉树的题目了。

开始数字相关的题目了,《各位相加》这道题,主要就是考察逻辑方面的能力。

如果你对逻辑的题目感兴趣,或许可以从这道题找到有意思的地方。

一起来看看吧。

image.png

算法题:翻转二叉树

从题目的描述上来看,只是提供了一个正整数。

然后将这个正整数每一位上的数字进行相加,然后得到一个中间值。

然后如果这个中间值不是个位数的话,那么就接着将每一位上的数字进行相加。

直到得到的值是一个个位数时,就将这个数字返回。

在示例中,我们也可以看的出来。

从38,相加后得到一个中间值11。

然后再次进行各位相加,最后得到值2。

代码展示

下面就是这次的代码展示了,主要就是通过数字取余的方式来判定是否继续相加。

逻辑比较简单,只要懂得如何取余,如何将所有的值得到就能完成这道题的解答。

public class Solution {

    public static void main(String[] args) {
        Solution solution = new Solution();
        System.out.println(solution.addDigits(38));
    }

    public int addDigits(int num) {
        while (num >= 10) {
            int s = 0;
            while (num > 0) {
                s += num % 10;
                num /= 10;
            }
            num = s;
        }
        return num;
    }

}

代码执行结果

今天执行的结果很可以,一如既往还是内存占用比较多,大家如果有更好的方案可以评论区讨论一下哈。

image.png

总结

今天的这道题,重在逻辑实现,只要将思绪理清,代码实现不在话下的,加油各位,胜利就在前方。