首页 > 其他分享 >Leetcode 066 加一

Leetcode 066 加一

时间:2024-01-21 15:12:07浏览次数:34  
标签:10 加一 数字 val 066 数组 prev Leetcode 输入

https://leetcode.cn/problems/plus-one/description/

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。

示例 1:
输入:digits = [1,2,3]
输出:[1,2,4]
解释:输入数组表示数字 123。

示例 2:
输入:digits = [4,3,2,1]
输出:[4,3,2,2]
解释:输入数组表示数字 4321。

示例 3:
输入:digits = [0]
输出:[1]
 

提示:
1 <= digits.length <= 100
0 <= digits[i] <= 9

解答
这个算是高精度加法的简化版本
我们在最末尾加上1 若正处理的该位超过10,该位编程个位并进位。 若该位小于10,则该位直接该位计算结果。
最后注意边界, 若所有字符串计算完 还有进位则最高位还要再额外添加一位(999+1 = 1000 输入的是999三位数字,结果为1000四位数字)。

代码如下

class Solution {
public:
    vector<int> plusOne(vector<int>& d) {
        int prev=1;
        for(int i = d.size()-1;i>=0;i--){
            int val = d[i];
            val = val+prev;
            if(val>=10){
                d[i]=val%10;
                prev = val/10;
            }else{
                d[i]= val;
                prev=0;
            }
        }
        if(prev!=0){
            d.insert(d.begin(),1);
        }

        return d;
    }
};

我的视频题解空间

标签:10,加一,数字,val,066,数组,prev,Leetcode,输入
From: https://www.cnblogs.com/itdef/p/17977883

相关文章

  • 最少交换次数 置换环 LeetCode 2471. 逐层排序二叉树所需的最少操作数目
    voidMain(){ varroot=newTreeNode(1) { left=newTreeNode(3) { left=newTreeNode(7), right=newTreeNode(6) }, right=newTreeNode(2) { left=newTreeNode(5), right=newTreeNode(4) } }; varr=newSolution().Minimu......
  • leetcode 169(摩尔投票)
    Problem:169.多数元素目录思路解题方法复杂度Code思路这里选择采用摩尔投票的方式进行计算众数,这里众数的定义是超过一半的数,假设众数的票为+1,负数的票为-1,则不难得到:当目前的票数为0时,后面的众数仍然是整个数组的众数.根据这个性质设计算法所有数的票面值和为......
  • leetcode 80
    题目描述删除有序数组中的重复项II给你一个有序数组nums,请你原地删除重复出现的元素,使得出现次数超过两次的元素只出现两次,返回删除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(1)额外空间的条件下完成。说明:为什么返回数值是整......
  • Leetcode 26 删除数组重复项
    题目描述给你一个非严格递增排列的数组nums,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。元素的相对顺序应该保持一致。然后返回nums中唯一元素的个数。考虑nums的唯一元素的数量为k,你需要做以下事情确保你的题解可以被通过:更改数......
  • 66. 加一
    原题链接classSolution{publicint[]plusOne(int[]digits){intn=digits.length;List<Integer>list=newArrayList<>();intcnt=0;for(inti=n-1;i>=0;i--){if(i==n-1){......
  • datawhale-leetcode打卡:001-012题
    这次这十二个题目属于是极限肝出来的,有两个参考了一下题解,还是很有意思。我会按照我个人的感觉去写这个东西。螺旋矩阵(leetcode054)这个题目比较恶心的就是跑圈的过程怎么描述。首先,顺时针一圈下来是先从左到右,顶到最右边i<m,好再往下,顶到最下边i<n,好现在i--往回排,最后j--走完一......
  • LeetCode 第 121 场双周赛
    LeetCode第121场双周赛大于等于顺序前缀和的最小缺失整数代码:classSolution{public:intmissingInteger(vector<int>&nums){intn=nums.size();set<int>s;for(autox:nums){s.insert(x);}......
  • leetcode 17.电话号码的字母组合
    leetcode17.电话号码的字母组合第十七题:电话号码的字母组合1.回溯:首先使用哈希表存储每个数字对应的所有可能的字母,然后进行回溯操作。回溯过程中维护一个字符串,表示已有的字母排列(如果未遍历完电话号码的所有数字,则已有的字母排列是不完整的)。该字符串初始为空。每次取电话......
  • 代码随想录算法训练营第一天| LeetCode704 二分查找,LeetCode35,LeetCode34,leetcode27.
    LeetCode704题目链接:704.二分查找-力扣(LeetCode)第一时间的想法:简单来说,二分法给我的印象就是想一条绳子上打很多的结,每次对折正好是一个结点,我们需要找到想要的结点比如(a)代码思路就是不断对折一直到绳子两端重合中间没有结点,最后剩下的就是要找的结点a了。......
  • leetcode 21.合并两个有序链表
    leetcode21.合并两个有序链表第二十一题:合并两个有序链表1.迭代:当l1和l2都不是空链表时,判断l1和l2哪一个链表的头节点的值更小,将较小值的节点添加到结果里,当一个节点被添加到结果里之后,将对应链表中的节点向后移一位。publicListNodemergeTwoLists(ListNodelist1,......