zoukankan      html  css  js  c++  java
  • leetcode 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.

    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; 

     1 class Solution {
     2 public:
     3     vector<int> plusOne(vector<int>& digits) {
     4         int s=digits.size();
     5         int n=0,j=0,r=0;
     6         digits[s-1]+=1;
     7         for(int i=s-1;i>=0;i--){
     8             if(digits[i]>=10){
     9                 n=digits[i];
    10                 digits[i]=0;
    11                 j=i;
    12                 while(n!=0){
    13                     r=n%10;
    14                     if(j>=0) digits[j--]+=r;
    15                     else digits.insert(digits.begin(),r);
    16                     n/=10;
    17                 }
    18             } 
    19         }
    20         return digits;
    21     }
    22 };
  • 相关阅读:
    数据库表数据传输到Oracle方案
    Pdnovel 在线阅读体验
    Metaweblog博客分发体验
    Liveqrcode活码系统设计
    Java Language Changes for Java SE 9
    利用“计算器”和公式做房贷计算
    阿里云SLB快速切换至https
    Charles 协助解决 metaweblog 排序问题
    Go语言网络通信---连续通信的UDP编程
    Go语言网络通信---一个简单的UDP编程
  • 原文地址:https://www.cnblogs.com/LUO77/p/4997353.html
Copyright © 2011-2022 走看看