Add Digits 各位相加
給定一個非負整數 num
,反覆將各個位上的數字相加,直到結果為一位數。
示例:
輸入:38
輸出: 2 解釋: 各位相加的過程為:3 + 8 = 11
,1 + 1 = 2
。 由於2
是一位數,所以返回 2。
進階:
你可以不使用迴圈或者遞迴,且在 O(1) 時間複雜度內解決這個問題嗎?
思路:這道題的笨辦法就不說了,說一個discuss裡面很厲害的方法,可以實現O(1)的複雜度。具體idea為:
假設N=(a[0] * 1 + a[1] * 10 + ...a[n] * 10 ^n),其中 a[0]...a[n] 都是在 [0,9] 之間的數字
我們設:M = a[0] + a[1] + ..a[n]
因為:
1 % 9 = 1
10 % 9 = 1
100 % 9 = 1
所以 N % 9 = a[0] + a[1] + ..a[n]
意味著 N % 9 = M
所以 N = M (% 9)
但是 9%9 = 0,所以這裡我們使用一點小技巧來解決 9%9=0的問題,我們設定取餘操作為: (n - 1) % 9 + 1
參考程式碼:
class Solution {
public:
int addDigits(int num) {
if (num == 0) return 0;
return (num - 1) % 9 + 1;
}
};
相關文章
- [LeetCode] 258. Add DigitsLeetCodeGit
- Add Strings 字串相加字串
- 258. 各位相加
- LeetCode每日一題: 各位相加(No.258)LeetCode每日一題
- LeetCode2: Add two numbers(兩數相加)LeetCode
- leetcode 兩數相加(add two numbers) Python程式設計實現LeetCodePython程式設計
- [LeetCode] 402. Remove K DigitsLeetCodeREMGit
- 【kickstart 2018 round A】 Even Digits PythonGitPython
- Codeforces 915C Permute DigitsGit
- ACL Beginner Contest E.Replace DigitsGit
- Atcoder ARC090F Number of DigitsGit
- 影像相加 Mean
- git add all和git add .區別Git
- 4.5.1 add
- 兩數相加Ⅰ和Ⅱ
- Leetcode兩數相加LeetCode
- LeetCode——兩數相加LeetCode
- JavaScript select add()JavaScript
- DataTransferItemList.add()
- 2.3 ADD CREDENTIALSTORE
- 2.2 ADD CHECKPOINTTABLE
- git add errorGitError
- LeetCode 2——兩數相加LeetCode
- python中列表相加Python
- LeetCode-兩數相加LeetCode
- 【LeetCode】2 兩數相加LeetCode
- 2. 兩數相加
- PHP字串數字相加PHP字串
- LeetCode-415-字串相加LeetCode字串
- 【leetcode】【2、兩數相加】LeetCode
- HOME: Count Digits —— 計算字串中數字個數Git字串
- 神奇補0解決連結串列相加:LeeCode002兩數相加
- Leetcode 67 Add BinaryLeetCode
- 撤銷git addGit
- Dockerfile:ADD VS COPYDocker
- 7.11 ADD_MONTHS
- IDBObjectStore.add() 方法Object
- Add Cmder Terminal to PHPStormPHPORM