加一(LintCode)
阿新 • • 發佈:2019-01-07
題目來源:LintCode
原題地址: http://www.lintcode.com/zh-cn/problem/plus-one/
題目:
難度級別:
容易
思路分析:
本題我採用的策略是,首先直接在原陣列上更改,並更新進位快取區,全部更新之後,進位快取區不為零,則需要開闢一塊新的記憶體空間來儲存新的陣列;如果進位快取區為零,則直接返回更新之後的陣列就可以了。
實現程式碼:
程式碼說明:
變數c 表示進位快取區,用來儲存進位的。
原題地址: http://www.lintcode.com/zh-cn/problem/plus-one/
題目:
給定一個非負數,表示一個數字陣列,在該數的基礎上+1,返回一個新的陣列。
該數字按照大小進行排列,最大的數在列表的最前面。
您在真實的面試中是否遇到過這個題? Yes 樣例給定[1,2,3]
表示
123, 返回[1,2,4]
.
給定[9,9,9]
表示
999, 返回[1,0,0,0]
.
難度級別:
容易
思路分析:
本題我採用的策略是,首先直接在原陣列上更改,並更新進位快取區,全部更新之後,進位快取區不為零,則需要開闢一塊新的記憶體空間來儲存新的陣列;如果進位快取區為零,則直接返回更新之後的陣列就可以了。
class Solution { public: /** * @param digits a number represented as an array of digits * @return the result */ vector<int> plusOne(vector<int>& digits) { int c = 1; for (int i = digits.size() - 1; i >= 0; i--) { digits[i] = digits[i] + c; c = digits[i]/10; digits[i] %= 10; } if (c > 0) { vector<int> temp(digits.size()+1, 0); temp[0] = c; for (int i = 1; i < temp.size(); i++) { temp[i] = digits[i - 1]; } return temp; } else { return digits; } } };
程式碼說明:
變數c 表示進位快取區,用來儲存進位的。