原题链接

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

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

你可以假设除了整数 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]
最后连接得到的结果是 "Goal"

提示:

  • 1 <= digits.length <= 100
  • 0 <= digits[i] <= 9


我的答案

Problem: 66. 加一

思路

先计算然后搜索执行下一步

解题方法

把最后一位执行+1然后利用while循环搜索数组里是否存在10,如果存在会有两种情况:
1): 10的键为0。
2): 10的键为其他。
当第一种情况发生时利用array_unshift()函数在数组头部插入1,然后将数组中键为10的值变为0。
当第二种情况发生时把数组中键为10的前一位执行+1操作,然后将数组中键为10的值变为0。

Code


class Solution {

    /**
     * @param Integer[] $digits
     * @return Integer[]
     */
    function plusOne($digits) {
        //获取数组长度
        $max = count($digits);
        //将数组最后一位执行+1操作
        $digits[$max-1] = $digits[$max-1]+1; 
        //循环判断数组中是否有10存在
        while(in_array(10,$digits)){
            //获取数组中值为10的键
            $key = array_search(10,$digits);
            //如果键为0
            if($key==0){
                //在数组头部追加值为1
                array_unshift($digits,1);
            }else{
                //值为10的键的前一位执行+1操作
                $digits[$key-1] = $digits[$key-1]+1;
            }
            //把值为10更改为0
            $digits[$key] = 0;
        }
        return $digits;

    }
}

其他php答案