66.加一
题目描述:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

解题思路:
要分成3种情况进行讨论:
1.当input的末位数小于9的情况,直接在末尾位置加一即可;
2.涉及一位进位的情况比如[1,9]+[1],先让末位为0,次高位要进一;
3.当涉及多位进位的情况,比如[9,9]+[1],数组的大小将会扩大,最高位还要再进一位.
class Solution { public: vector<int> plusOne(vector<int>& digits) { int len =
digits.size(); //从数组末位开始循环 for(int i = len - 1; i >= 0; --i){ //若某位数<9,在该位上+1即可
if(digits[i] < 9){ ++digits[i]; return digits; } if(i == 0){
//循环到最高位时,最高位赋值1,并且在该数末位添加0(针对类似[9,9,9]这样的数组) digits[i] = 1;
//push_back的用法就是在数组中插入元素 digits.push_back(0); } else
//还没循环到最高位且digits[i]=9时,该位赋值为0 digits[i] = 0; } return digits; } };

技术
©2019-2020 Toolsou All rights reserved,
程序员与架构师华山论道element ui 下拉框搜索功能常见的5种JAVA运行时异常Java分布式系统高并发解决方案小结2年前出厂的小天才电话手表无法使用 联通:2G网已关闭继承jpa Repository 写自定义方法查询【Python-数据读取】读取txt文件每一行数据生成列表判断当前对象是不是数组的4种方式C#/.NET 系统优化专题(redis第六篇 数据结构【List】)Go语言 数组初始化和基本操作