Leetcode PHP题解--D141 66. Plus One

skys215 -
Leetcode PHP题解--D141 66. Plus One
D141 66. Plus One题目链接

66. Plus One

题目分析

以数组形式给定一个整数,并以数组形式返回给它加1后的结果。

例如:

Input [9]
Output [10]
Expected [1,0]

Input [1,9,9]
Expected [2,0,0]
解题思路

一开始我的想法是把数组拼接,然后+1,再拆成数组。但忽略了它给定的整数可能会超过32位/64位的情况。遂放弃。

因为高位在前,低位在后,我采用的是把数组反转过来的方案。当然,也可以先计算数组长度,再用for循环从后往前也是可以的。

在for循环中,我们先给当前位数加1,看其是否溢出,即是否需要进位。

若加了1之后小于10,即不需要进位,那么后面的所有位数都不用进位。直接中断循环。否则把当前数字置零并继续循环。这里也可以+1取余来”兼容“不止加1的情况。

这里有两种情况:

在不增加位数的情况下完成进位,也就说+1之后不会改变位数。进位后位数会增加,也就是说数字全是9,+1之后最后需要再加个数字1。例如,[9], [9,9](99), [9,9,9](999)。原本是n位的,+1之后变成了n+1位。

按照上面给定的算法,会出现最后是0的情况。这个时候需要手动补足数字1。

最后再把数组翻转回去即可。

最终代码
<?php
class Solution {

    /**
     * @param Integer[] $digits
     * @return Integer[]
     */
    function plusOne($digits) {
        $revArr = array_reverse($digits);
        foreach($revArr as $index => $num){
            if(++$revArr[$index] < 10){
                break;
            }
            $revArr[$index] = 0;
        }
        if($revArr[$index]===0){
            $revArr[] = 1;
        }
        return array_reverse($revArr);
    }
}

若觉得本文章对你有用,欢迎用爱发电资助。

特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。

php介绍

PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。

Tags 标签

leetcodephp

扩展阅读

加个好友,技术交流

1628738909466805.jpg