go语言题解LeetCode66加一示例详解

 更新时间:2022年12月30日 15:04:22   作者:刘09k11  
这篇文章主要为大家介绍了go语言题解LeetCode66加一示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

题目描述

原题链接 :

66. 加一

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。

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

你可以假设除了整数 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

思路分析

对于一般的数字,直接在末位加一即可,

本题特殊的两个点:

若加一之后的值为10,需要进一位

若数字为类似999 ,加一之后需要多一位数。使用insert()来实现, insert函数 : vec.insert(begin()+i ,a) 在第i个元素插入a

AC 代码

class Solution {
public:
    vector<int> plusOne(vector<int>& digits) {
        int size = digits.size();
        if(digits[size-1] != 9) //若末位不等于9,正常加一
        {
            ++digits[size-1];
        }
        else //若末位等于9,加一等于0
        {
            digits[size-1] = 0;
            for(int i = size - 1; i >0; --i) //若加完一后若等于0,下一位要进一 如869
            {
                if(digits[i] == 0)
                {
                    digits[i-1] = (digits[i-1] + 1) % 10;
                }
                else
                    break; //若某一位是数不需要进一,跳出循环
            }
            if(digits[0] == 0) //若到最后最高位也等于0,需要多一位数 如99 + 1  此时为答案为00,进行一下操作
            {
                digits.insert(digits.begin(),1); //在最高位插入1
            }
        }
        return digits;
    }
};

小结

题目不长,但是还是有点拗口的感觉,首先要先弄明白题意,然后正常的思路下考虑进位的溢出等就可以解出来。

JavaScript 66题

代码

/**
 * @param {number[]} digits
 * @return {number[]}
 */
var plusOne = function(digits) {
    //先遍历 从右向左
    for(let i = digits.length-1;i>=0;i--){
        if(digits[i] !==9){
            digits[i]++
                return digits;
        }else{
            // 是 9
            digits[i] = 0
        }
    }
    let result = [1,...digits];
    /* let result = [1].concat(digits);
    digits.unshift(1);
 */
    return result;
};

python3 循环判断

分析:

这是一道基础的属组倒序查找的问题,唯一需要关注的就是类似[9,9]的场景,循环后需要看是否需要进位。

如果需要进位,则在数组0位置插入1,才能保证接过的正确性。

class Solution:
    def plusOne(self, digits):
        count = 1
        for i in range(len(digits) - 1, -1, -1):
            count, digits[i] = divmod(digits[i] + count, 10)
            if count == 0:
                break
        if count:
            digits.insert(0,count)
        return digits

JAVA解决进位问题

解题思路

倒着看,不为9,直接加1,返回:为9的话,需要进位,变成0即可;

特殊情况 9 99 等,一直为9的,结果肯定是10 ,100 数组长度加1 ,首位为1

代码

class Solution {
    public int[] plusOne(int[] digits) {
        int length = digits.length;
        // 最后一个不为九的数加1,为九的变0,9 99 单独处理
        for (int i =  length - 1; i >= 0; i--) {
            if(digits[i] != 9){
                digits[i] = digits[i] + 1;
                return digits;
            }else {
                digits[i] = 0;
            }
        }
        int[] ints = new int[length + 1];
        ints[0] = 1;
        return ints;
    }
}

以上就是go语言题解LeetCode66加一示例详解的详细内容,更多关于go题解LeetCode66加一的资料请关注脚本之家其它相关文章!

相关文章

  • ubuntu下搭建Go语言(golang)环境

    ubuntu下搭建Go语言(golang)环境

    这篇文章主要介绍了ubuntu下搭建Go语言(golang)环境,需要的朋友可以参考下
    2015-01-01
  • 深入理解Go语言中的闭包

    深入理解Go语言中的闭包

    Go函数是可以闭包的。闭包是一个函数值,他来自函数体外部的变量引用。 下面这篇文章通过一个demo来进行深入的介绍了Go语言中闭包的相关资料,文中介绍的非常详细,需要的朋友可以参考下。
    2017-03-03
  • 详解如何在golang项目开发中创建自己的Module

    详解如何在golang项目开发中创建自己的Module

    既然我们使用了很多开源的 module为我们的日常开发提供了很多的便捷性,那我们该如何实现自己的 module 来提供给团队中使用,接下小编就给大家介绍一下在golang项目开发如何创建自己的Module,需要的朋友可以参考下
    2023-09-09
  • GoLand 2020.3 正式发布有不少新功能(支持泛型)

    GoLand 2020.3 正式发布有不少新功能(支持泛型)

    这是 2020 年第 3 个版本,也是最后一个版本,你还将发现许多新的代码编辑功能,具体内容详情跟随小编看看有哪些新特性
    2020-12-12
  • Go存储基础使用direct io方法实例

    Go存储基础使用direct io方法实例

    这篇文章主要介绍了Go存储基础之如何使用direct io方法实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • go语言使用io和bufio包进行流操作示例详解

    go语言使用io和bufio包进行流操作示例详解

    这篇文章主要为大家介绍了go语言使用io和bufio包进行流操作示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • Go语言时间相关操作合集(超详细)

    Go语言时间相关操作合集(超详细)

    在开发应用程序的过程中,经常需要记录某些操作的时间或者格式化时间戳,因此大部分编程语言都会有操作时间的库,Go语言当然也不例外,本文我们就一起来学习一下time包的使用
    2023-08-08
  • 成功安装vscode中go的相关插件(详细教程)

    成功安装vscode中go的相关插件(详细教程)

    这篇文章主要介绍了成功安装vscode中go的相关插件的详细教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • Go语言中三种不同md5计算方式的性能比较

    Go语言中三种不同md5计算方式的性能比较

    md5计算在我们日常工作的时候经常能遇到,下面这篇文章主要介绍了Go语言中三种不同md5计算方式的性能比较,需要的朋友可以参考借鉴,下面来一起学习学习吧。
    2017-01-01
  • mac下安装golang框架iris的方法

    mac下安装golang框架iris的方法

    这篇文章主要介绍了mac下安装golang框架iris的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11

最新评论