zoukankan      html  css  js  c++  java
  • 【Leetcode】【Easy】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.

    解题方法1:

    模拟运算过程,从低位数字到高位数字计算,新建一个变量记录进位情况。

     1 class Solution {
     2 public:
     3     vector<int> plusOne(vector<int> &digits) {
     4         int len = digits.size();
     5         int sig = 0;
     6         digits[len-1] += 1;
     7         for (int i=len-1; i>=0; --i) {
     8             digits[i] += sig;
     9             sig = digits[i] / 10;
    10             digits[i] = digits[i] % 10;
    11         }
    12         
    13         if (sig == 1) {
    14             digits.insert(digits.begin(), 1);
    15         }
    16         
    17         return digits;
    18     }
    19 };

    更聪明的方法(应该是最棒的方法):

    1、计算过程其实问题就是两步,从最低位开始,进行如下循环:如果不是9,则此位++,break;如果是9,则此位为0,continue;

    2、当最高位满10需要进位时:最高位满10只有一种情况,即99..99+1,所以在第一条方法基础上,计算后判断首位(最高位)是否是0,是0则表示最高位发生了进位。将最高位置1,最低位补充一位0;

    3、更多的细节:如果在1过程中遇到了某位不是9,则不必在break后判断首位是不是0,因此可以直接返回;

               既然如此,只要程序在1过程中没有返回,而运行到了循环外,就说明首位发生了进位,可以不用判断,直接进行步骤2。

    具体代码:

     1 class Solution {
     2 public:
     3     vector<int> plusOne(vector<int> &digits)
     4     {
     5         int n = digits.size();
     6         for (int i=n-1; i>=0; --i)
     7         {
     8             if (digits[i] == 9) {
     9                 digits[i] = 0;
    10             } else {
    11                 digits[i]++;
    12                 return digits;
    13             }
    14         }
    15         
    16         digits[0] =1;
    17         digits.push_back(0);
    18         
    19         return digits;
    20     }
    21 };

    附录:

    vector、list等特性及使用注意。

  • 相关阅读:
    设置Jmeter默认中文页面
    spring boot controller设置 @Transactional 不回滚的解决办法
    SpringBoot事务注解@Transactional
    spring boot @Transactional事物处理
    Spring事务管理中@Transactional
    @Transactional 注解的使用和注意
    spring的@Transactional注解详细用法
    【Developer Log】ProGuard扰码可执行JAR包
    使用Jprofiler+jmeter进行JVM性能调优
    SQL中如何使用EXISTS替代IN
  • 原文地址:https://www.cnblogs.com/huxiao-tee/p/4220335.html
Copyright © 2011-2022 走看看