LeetCode 258 Add Digits
leetcode 上做了一題比較有意思,記錄一下,傳送門:https://leetcode.com/problems/add-digits/description/
題目意思是:給一個正整數(shù)a,讓其個位,十位,百位·····一直到最高位加起來得到另一個數(shù)字b,然后再對數(shù)字b重復這個過程,直到相加的到的數(shù)字為個位數(shù)時返回
舉例說明:
例如輸入234,返回值為2+3+4=9
輸入78,第一步7+8=15,第二步1+5=6,返回6
多試幾個發(fā)現(xiàn)有以下規(guī)律
| 輸入 | 輸出 |
| 29 | 2 |
| 28 | 1 |
| 27 | 9 |
| 26 | 8 |
| 25 | 7 |
| 24 | 6 |
| 23 | 5 |
| 22 | 4 |
| 21 | 3 |
| 20 | 2 |
| ······ | ······· |
發(fā)現(xiàn)輸出的數(shù)為輸入數(shù)字的取余(9的倍數(shù)和小于9的數(shù)字除外)
驗證也不難,推導過程如下:
假設輸入數(shù)字為num,可將num拆分為個位數(shù)字乘以1,十位數(shù)字乘以十,百位數(shù)字乘以100,以此類推到最高位,
數(shù)學表達式表示為:input=n1*1+n2*10+n3*100+·····(n1,n2,n3···分別表示個位數(shù)字,十位數(shù)字,百位數(shù)字····)
執(zhí)行一次之后:ouput=n1+n2+n3+·····(n1,n2,n3···分別表示個位數(shù)字,十位數(shù)字,百位數(shù)字····)
input - output = 9 * (1/9 * n1+n2+11*n3+111*n4+·········)=9*sum(sum為一個常量)
?
?
所以最后的代碼為(javascript):
var addDigits = function(num) {if(num<9) return num;if(num%9===0) return 9;return num%9; };
轉載于:https://www.cnblogs.com/xingguozhiming/p/9386154.html
總結
以上是生活随笔為你收集整理的LeetCode 258 Add Digits的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于基本面因子的量化交易模型解析
- 下一篇: 线段树、树状数组