码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode(66): Plus one

时间:2016-01-05 13:59:28      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:

Plus One: Given a non-negative number represented as an array of digits, plus one to the number.

The digits are stored such that the most significant digit is at the head of the list.

Subscribe to see which companies asked this question.

题意:给定一个数组,数组中的数字在0~9之间,这个数组表示为一个整数。排列顺序为:最高位在array[0] ,最低位在[n-1],n为数组长度。例如:34,存储为array[0]=3,array[1]=4。题目要求对这个数字进行加1操作。

解题思路:从数组的最后一位开始加1,如果为9加1之后为10,产生进位,则该位置0,进位;如果加1之后不产生进位则结束;如果最后到[0]位之后仍然产生进位则,需要新建一个长度为(n+1)的数组,拷贝原来的数组。

代码:

public int[] plusOne(int[] digits) {
        
        if(digits[digits.length-1] <9){
            digits[digits.length-1] += 1;
            return digits;
        }
        //是否进位
        boolean carry = true;
        for(int i = digits.length - 1;i>=0;i--){
            if(!carry){
                break;
            }
            if(digits[i]==9){
                carry = true;
                digits[i]=0;
            }else{
                digits[i] += 1;
                carry =false;
            }
            } //for
        if(carry){
            int[] result = new int[digits.length + 1];
            System.arraycopy(digits,0,result,1,digits.length);
            result[0] = 1;
            return result;
        }else{
        return digits;
        }

其中:用到的java中的数组Copy的函数System.arraycopy()完成将一个数组的内容复制到另一个数组中,其参数含义是:

static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
src: 源数组;
srcPos: 从指定的位置开始复制;
dest:目标数组;
length:复制的长度;

LeetCode(66): Plus one

标签:

原文地址:http://www.cnblogs.com/Lewisr/p/5102088.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!