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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 软件测试(2) UFT安装

    软件测试(2) UFT安装1.QTP/UFT11.5(安装和破解)Quicktestprofessional(QTP/UFT)11.5官方版(含汉化包)下载地址:http://www.ddooo.com/softdown/63985.htm该网页中有 QTP无限试用教程具体百度网盘:http://pan.baidu.com/s/1hrTydRQ2.UFT12参考:http

    2022年5月12日
    43
  • SAE J1939物理层

    SAE J1939物理层在SAEJ1939-11和ISO11898中对商用车使用的线束都是屏蔽双绞线,即为除了电源、地、CAN_H、CAN_L之外还有一个屏蔽线,并且所有ECU的屏蔽线都接到同一个地线上,一般接地点选择在网络的中央位置上。但是在实际使用中,多数整车厂使用的都是非屏蔽双绞线,比较而言,非屏蔽双绞线的EMC特性要差一些,在1939中正常使用屏蔽双绞线一路CAN网络上最多可以接入30个ECU,而对于非屏蔽双

    2022年5月22日
    33
  • 谈谈数据库连接池的原理及应用_常用的数据库连接池

    谈谈数据库连接池的原理及应用_常用的数据库连接池这次我们采取技术演进的方式来谈谈数据库连接池的技术出现过程及其原理,以及当下最流行的开源数据库连接池jar包。

    2022年9月17日
    3
  • EasyDSS流媒体服务器软件-正式环境安装部署攻略

    EasyDSS流媒体服务器软件-正式环境安装部署攻略EasyDSS流媒体服务器软件,提供一站式的转码、点播、直播、时移回放服务,极大地简化了开发和集成的工作。其中,点播功能主要包含:上传、转码、分发。直播功能主要包含:直播、录像,直播支持RTMP输入,RTMP/HLS/HTTP-FLV的分发输出;录像支持自定义保存时长、检索及下载。提供丰富的二次开发接口,基于JSON的封装及HTTP调用。提供播放鉴权、推流鉴权等安全保证。提供用户及相关权限管理…

    2022年6月9日
    32
  • 如何在云服务器搭建虚拟主机,如何在云服务器搭建虚拟主机

    如何在云服务器搭建虚拟主机,如何在云服务器搭建虚拟主机如何在云服务器搭建虚拟主机内容精选换一换GaussDB(DWS)提供的gsql命令行客户端,它的运行环境是Linux操作系统,在使用gsql客户端远程连接GaussDB(DWS)集群之前,需要准备一个Linux主机用于安装和运行gsql客户端。如果通过公网地址访问集群,也可以将gsql客户端安装在用户自己的Linux主机上,但是该Linux主机必须具有公网地址。为方便起见,弹性云服务器(El…

    2022年6月25日
    44
  • android 联系人中,在超大字体下,加入至联系人界面(ConfirmAddDetailActivity)上有字体显示不全的问题…

    android 联系人中,在超大字体下,加入至联系人界面(ConfirmAddDetailActivity)上有字体显示不全的问题…

    2022年3月3日
    68

发表回复

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

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