D14166.PlusOne题目链接66.PlusOne题目分析给定一个数组形式的整数,将其加1后的结果以an的形式返回大批。例如: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。最后,将数组翻转过来。最终代码foreach($revArras$index=>$num){if(++$revArr[$index]<10){中断;}$revArr[$index]=0;}if($revArr[$index]===0){$revArr[]=1;}返回array_reverse($revArr);}}如果您觉得本文对您有用,欢迎使用爱根贷支持。
