leetcode Plus One
2015-11-26 12:38
417 查看
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.
Subscribe to see which companies asked this question
刚开始没有理解题意。意思事实上表示给你一个vector,这个vector将一个数字每一位拆分,例如,100就会变成[1,0,0];
让你把这个数加1,就100变成101,返回vector[1,0,1]
这个问题不难,有两个问题需要注意的:
一、给你一个vector,并不表示,每个vector的数字是0~9的,有可能是[1,10,1],事实上它是201。所以就是一个需要规格化的。
二、有可能出现第一个元素进位,那么就需要在vector的开始再加入一个元素,我在这里用到的是vector.insert(vector.begin(),val);
在这补充一下insert函数的用法:
insert() 函数有以下三种用法:
在指定位置loc前插入值为val的元素,返回指向这个元素的迭代器,
在指定位置loc前插入num个值为val的元素
在指定位置loc前插入区间[start, end)的所有元素 .
举例:
//创建一个vector,置入字母表的前十个字符
vector <char> alphaVector;
for( int i=0; i < 10; i++ )
alphaVector.push_back( i + 65 );
//插入四个C到vector中
vector <char>::iterator theIterator = alphaVector.begin();
alphaVector.insert( theIterator, 4, 'C' );
//显示vector的内容
for( theIterator = alphaVector.begin(); theIterator != alphaVector.end(); theIterator++ )
cout < < *theIterator;
The digits are stored such that the most significant digit is at the head of the list.
Subscribe to see which companies asked this question
刚开始没有理解题意。意思事实上表示给你一个vector,这个vector将一个数字每一位拆分,例如,100就会变成[1,0,0];
让你把这个数加1,就100变成101,返回vector[1,0,1]
这个问题不难,有两个问题需要注意的:
一、给你一个vector,并不表示,每个vector的数字是0~9的,有可能是[1,10,1],事实上它是201。所以就是一个需要规格化的。
二、有可能出现第一个元素进位,那么就需要在vector的开始再加入一个元素,我在这里用到的是vector.insert(vector.begin(),val);
在这补充一下insert函数的用法:
insert() 函数有以下三种用法:
在指定位置loc前插入值为val的元素,返回指向这个元素的迭代器,
在指定位置loc前插入num个值为val的元素
在指定位置loc前插入区间[start, end)的所有元素 .
举例:
//创建一个vector,置入字母表的前十个字符
vector <char> alphaVector;
for( int i=0; i < 10; i++ )
alphaVector.push_back( i + 65 );
//插入四个C到vector中
vector <char>::iterator theIterator = alphaVector.begin();
alphaVector.insert( theIterator, 4, 'C' );
//显示vector的内容
for( theIterator = alphaVector.begin(); theIterator != alphaVector.end(); theIterator++ )
cout < < *theIterator;
class Solution { public: vector<int> plusOne(vector<int>& digits) { int s=digits.size(); int n=0,j=0,r=0; digits[s-1]+=1; for(int i=s-1;i>=0;i--){ if(digits[i]>=10){ n=digits[i]; digits[i]=0; j=i; while(n!=0){ r=n%10; if(j>=0) digits[j--]+=r; else digits.insert(digits.begin(),r); n/=10; } } } return digits; } };
相关文章推荐
- UTF8、UTF16 之间的转换
- netty5学习笔记-内存池6-可调优参数
- 229. Majority Element II
- IOS中类和对象还有,nil/Nil/NULL的区别
- MySql root 用户密码忘记后重置root密码
- C盘分区
- 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
- final
- LaTeX 矩阵
- PHP开发工具及配置过程
- 详解Ajax技术
- LaTeX 矩阵
- 在Java中,如何跳出当前的多重嵌套循环?
- 构造器(constructor)是否可被重写(override)?
- 未能从程序集“System.ServiceModel”中加载类型“System.ServiceModel.Activation.HttpModule”。
- redis安装(centos 6.5 32)
- gcc与g++
- 未能从程序集“System.ServiceModel”中加载类型“System.ServiceModel.Activation.HttpModule”。
- canvas基础练习
- 从照片库选择多张图片到collectionView