leetcode题库之258

原创 2015年11月21日 13:01:25

258/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 = 11, 1 + 1 = 2. Since 2 has only one digit, return it.

中文翻译:给定一个正数,将其所有位数上的数字进行相加得到一个新的数。不断反复,直到得到的数是一位数的。

解题思路:
1.先要保存好num各位上的数字
2.将保持好的数字进行相加得到新的num
3.反复操作,直到num满足只有一位数的要求

一开始是先想到要用到数组来对各位数的数进行存储,程序写好后想对代码进行优化,想了一下发现其实可以不需要用到数组,只用一个辅助变量其实就能实现。改完后百度了一下,发现还有一个更简单的方法,其实该题是有规律的。。。

最开始的程序算法:

int addDigits(int num) {
    int i=0,j=0;
    int tem = num;
    int a[100];
    while((num/10)>0)     //遍历num各位上的数字,并存放在数组a中
    {
        while((tem/10)>0)   
        {
            a[i] = tem%10;
            tem=tem/10;
            i++;
        }
        for(j=0;j<i;j++)   //将存储好的数字分别相加得到新的num
        {
            tem+=a[j];
        }
        i=0;              //数组下标置0,重复对num各位数字的遍历
        num=tem;
    }
    return num;
}

优化了下代码:

int addDigits(int num) {
    int tem=0;
    while((num/10)>0)
    {
        while((num/10)>0)    //遍历num每位的数字
        {
            tem+= num%10;   //得出num各位上的数字后直接相加
            num=num/10;
        }
        num+=tem;
        tem=0;
    }
    return num;
}

根据规律来实现:

int addDigits(int num) {
     return (num-1)%9+1;
}

leetcode 258- Add Digits

leetcode题目汇集 — Add Digitsleetcode 258- Add Digits 题目要求 Given a non-negative integer num, repeatedl...

【LeetCode-258】Add Digits(C++)

题目要求:给出一个非负整数num,重复的将num各个位上的数字加在一起,一直得到的结果是个位数。                    如:num=38,则3+8=11,1+1=2。最后得到个位数字...

leetcode算法——258:Add Digits(基于JAVA)

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

leetCode 258. Add Digits

题目链接:https://leetcode.com/problems/add-digits/     题目内容: Given a non-negative integer num, rep...

LeetCode之路:258. Add Digits

LeetCode之路:258. Add Digits 一、引言这是一道比较难的题,之所以下这个定义,是因为要做出来这道题的正确答案,需要一点点数学知识。当然,能看到这篇博客的人,大部分都是程序员,那么...

<LeetCode OJ> 258. Add Digits

258. Add Digits My Submissions Question Total Accepted: 54029 Total Submissions: 113401 Difficul...

Leetcode - Math -258. Add Digits(数位求和,规律题)

1. Problem Description  Given a non-negative integer num, repeatedly add all its digits until the r...

LeetCode 258 Add Digits(数字相加,数字根)

翻译给定一个非负整型数字,重复相加其所有的数字直到最后的结果只有一位数。例如:给定sum = 38,这个过程就像是:3 + 8 = 11,1 + 1 = 2,因为2只有一位数,所以返回它。紧接着:你可...
  • NoMasp
  • NoMasp
  • 2015年12月24日 10:17
  • 3446

leetcode 21_Merge Two Sorted Lists & leetcode_258 Add Digits & leetcode_66plus one

l leetcode 21_Merge Two Sorted Lists 题目:Merge two sorted linked lists and return it as a new list...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:leetcode题库之258
举报原因:
原因补充:

(最多只允许输入30个字)