Leetcode_plus-one(c++ and python updated)
2014-03-21 22:55
281 查看
地址:http://oj.leetcode.com/problems/plus-one/
Given a non-negative number represented as an array of digits, plus one to the number.
The digits are stored such that the most significant digit is at the head of the list.
思路:大数相加原理。用carry表示进位。40ms
参考代码:
//SECOND TRIAL, 12msclass Solution {public: vector<int> plusOne(vector<int> &digits) { if(digits.empty()) return digits; bool flag = false; int sz = digits.size(); for(int i = 0; i<sz; ++i) { if(digits[i]!=9) { flag = true; break; } } if(!flag) { vector<int>ans(sz+1, 0); ans[0] = 1; return ans; } int carry = 1; for(int i = sz-1; i>=0; --i) { digits[i] += carry; if(digits[i]==10) { digits[i] = 0; carry = 1; } else break; } return digits; }};
python:
class Solution: # @param digits, a list of integer digits # @return a list of integer digits def plusOne(self, digits): if not digits: return digits carry = 1 for i in range(len(digits)-1, -1, -1): digits[i] += carry if digits[i] == 10: carry = 1 digits[i] = 0 else: return digits
digits.insert(0, 1) return digits
Given a non-negative number represented as an array of digits, plus one to the number.
The digits are stored such that the most significant digit is at the head of the list.
思路:大数相加原理。用carry表示进位。40ms
参考代码:
class Solution { public: vector<int> plusOne(vector<int> &digits) { int carry = 1, num = 0; vector<int>res; for(int i = digits.size()-1; i>=0; --i) { num = digits[i] + carry; if(num>9) { carry = 1; res.push_back(num-10); } else { carry = 0; res.push_back(num); } } if(carry) res.push_back(carry); reverse(res.begin(), res.end()); return res; } };
//SECOND TRIAL, 12msclass Solution {public: vector<int> plusOne(vector<int> &digits) { if(digits.empty()) return digits; bool flag = false; int sz = digits.size(); for(int i = 0; i<sz; ++i) { if(digits[i]!=9) { flag = true; break; } } if(!flag) { vector<int>ans(sz+1, 0); ans[0] = 1; return ans; } int carry = 1; for(int i = sz-1; i>=0; --i) { digits[i] += carry; if(digits[i]==10) { digits[i] = 0; carry = 1; } else break; } return digits; }};
python:
class Solution: # @param digits, a list of integer digits # @return a list of integer digits def plusOne(self, digits): if not digits: return digits carry = 1 for i in range(len(digits)-1, -1, -1): digits[i] += carry if digits[i] == 10: carry = 1 digits[i] = 0 else: return digits
digits.insert(0, 1) return digits
相关文章推荐
- 【C++】1016. Phone Bills (25)
- 黑马程序员_OC语言的点语法和合成存取方法
- C语言的那些秘密之---函数返回局部变量
- C语言的那些秘密之---函数返回局部变量
- c语言"贪吃蛇"游戏源码
- C++ 引用
- Gromacs源码收获(一)
- 清华大学出版社即将推出的又一本挂羊头卖狗肉的劣书 《C语言入门1.2.3—一个老鸟的C语言学习心得》
- c语言 考研 复习
- C语言正则表达式的使用
- C++文件读写详解(ofstream,ifstream,fstream)
- 初学者:学习C++第二天
- [TECH]DSP中C语言的优化等级
- 从Java到C++——枚举类型的使用
- c语言贪吃蛇的源码,用'A''S''D''W'操作
- c语言奢侈单的游戏胆码
- C++中RTTI机制剖析
- Effective C++学习笔记(二)
- 指针数组&&数组指针
- 2013年第四届蓝桥杯全国软件大赛本科A组c++预赛 题目及参考答案