Leetcode: Plus One

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.

题目意思是说给定一个数这个数以数组的形式表示,就是说这个数各个位上的数保存在一个数组里面,然后给这个数加一。求返回的结果。当然仍旧以数组的形式返回。

C++演示样例代码:

class Solution {
public:
    vector<int> plusOne(vector<int> &digits)
    {
        vector<int>::size_type size = digits.size();
        //当digits的每一位都是9的时候,由于返回的结果位数要添加1。所以做一个特殊处理。

bool flag = true; for (size_t i = 0; i < size; i++) { if (9 != digits[i]) { flag = false; } } if (flag) { digits.resize(size + 1); digits[0] = 1; for (size_t i = 1; i <= size; i++) { digits[i] = 0; } return digits; } //当digits的每一位并不都是9的时候 //假设最后一位不是9,直接加一返回 if (digits[size - 1] != 9) { digits[size - 1]++; return digits; } //假设最后一位是9,则变成0,前面一位加一,假设加一以后变成10。则循环进行这种处理 else { digits[size - 1] = 0; digits[size - 2]++; for (int i = size - 2; i >= 0; i--) { if (10 == digits[i]) { digits[i] = 0; digits[i - 1]++; } } } return digits; } };

我写的代码看起来比較繁琐,看到网上有高手这样做的:

class Solution 
{
public:
    vector<int> plusOne(vector<int> &digits) 
    {
        vector<int> ret(digits);
        reverse(ret.begin(), ret.end());

        int flag = 1;
        for(int i = 0; i < ret.size(); i++)
        {
            ret[i] += flag;
            //这里的flag的结果要么是0。要么是1
            flag = ret[i] / 10;
            ret[i] %= 10; 
        }

        if (flag == 1)
            ret.push_back(1);

        reverse(ret.begin(), ret.end());

        return ret;
    }
};

只是,最后这两段代码咱Leetcode上提交以后都用时是4ms!肯能是后者的代码中用了两次vector的reverse略微占了一些时间吧。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115231.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PDB文件格式「建议收藏」

    PDB文件格式「建议收藏」PDBFiles:WhatEveryDeveloperMustKnowhttp://www.wintellect.com/CS/blogs/jrobbins/archive/2009/05/11/pdb-files-what-every-developer-must-know.aspxPDB文件:每个开发人员都必须知道的一什么是PDB文件大部分的开发人员应该…

    2022年6月2日
    26
  • RestFul风格详解

    RestFul风格详解文章目录一、前言二、什么是RestFul风格三、传统风格与RestFul风格对比1.传统方式操作资源2.RestFul方式操作资源四、RestFul代码演示1.代码展示2.拓展情景五、使用method属性指定请求类型六、总结一、前言该技术博客总结与狂神说SpringMVC课程二、什么是RestFul风格Restful就是一个资源定位、资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。资源:互联网所有的事物都可以被抽象为资源资源

    2022年6月16日
    19
  • c语言将时速转换成配速,配速与时速换算(跑步配速和时速换算)

    c语言将时速转换成配速,配速与时速换算(跑步配速和时速换算)时间除以路程,一般时间单位用分,路程单位用千米。比如20分钟跑了3千米,那配速就是20/3=6.66,也就是6分40秒每公里,一般说成640的配速。配速是针对长跑来说的,对短跑和中跑是不采用这个概念的。马拉松运动讲究匀速,在匀速的状态下才能更好地发挥自己的实力。很多跑步爱好者很注意控制速度。他们根.时速的意思是当时跑步的速度,配速是平均每公里耗时几分钟消耗是指跑步消耗的热量相当于每小时跑多少千…

    2022年6月28日
    64
  • 二叉树的五大性质及证明「建议收藏」

    二叉树的五大性质及证明「建议收藏」二叉树(BinaryTree)定义:一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根结点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成。特点:每个结点至多只有两棵子树(二叉树中不存在度大于2的结点)五种形态: 1.性质1性质1 在二叉树的第i层至多有2^(i-1)个结点。(i&gt;=1) [用数学归纳法证明]  …

    2022年5月18日
    39
  • 7-9 判断素数 (20分) 本题的目标很简单,就是判断一个给定的正整数是否素数。[通俗易懂]

    7-9 判断素数 (20分) 本题的目标很简单,就是判断一个给定的正整数是否素数。[通俗易懂]7-9 判断素数 (20分) 本题的目标很简单,就是判断一个给定的正整数是否素数。输入格式: 输入在第一行给出一个正整数N(≤ 10),随后N行,每行给出一个小于2 ​31 ​​ 的需要判断的正整数。输出格式: 对每个需要判断的正整数,如果它是素数,则在一行中输出Yes,否则输出No。输入样例: 2 11 111 输出样例: Yes No#include &l…

    2022年8月18日
    3
  • java 将String字符串转 List集合「建议收藏」

    java 将String字符串转 List集合「建议收藏」StringgameString=”199,99,243,34,52,57,193,277,194,284,275,270,274,54,238,259,225,262,32,53,31,196,33,286,246,285,94,200,276,269,242,271,40,272,278,251,5,288,11,283,245,253,58,241,282,197,237,93,55,

    2022年5月14日
    50

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号