Easy-题目30:66. Plus One

原创 2016年05月30日 20:14:24

题目原文:
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.
题目大意:
对用各数位的数组表示一个非负数做+1运算。数组的头部代表数字的高位。
(例如,数字123用数组[1,2,3]表示,加1运算后返回数组[1,2,4])。
题目分析:
分两种情况考虑。
(1) 这个数字全是9,这是一种最特殊的情况,因为新数组的长度跟原来数组不一样。
(2) 其他情况,则仿照竖式加法,从最后一位开始,寻找第一个不是9的数位(一定存在,否则在情况1中已经解决),这一位加1,后面的数位全部置为0.
源码:(language:java)

public class Solution {
    public int[] plusOne(int[] digits) {
        int len=digits.length;
        if(len==0)
            return null;
        boolean all9=true;
        for(int i=0;i<len;i++) {
            if(digits[i]!=9) {
                all9=false;
                break;
            }
        }
        if(all9) { //this num has the form of 999......... , which will be 1000.... after added 1.
            int[] result=new int[len+1];
            result[0]=1;
            return result;
        }
        else {
            if(digits[len-1]<9)
                digits[len-1]++;
            else {
                digits[len-1]=0;
                int i=len-2;
                while(digits[i]==9)
                    digits[i--]=0;
                digits[i]++;
            }
            return digits;
        }
    }
}

成绩:
1ms,beats 4.41%,众数:0ms,58.86%
cmershen的碎碎念:
本题巧用了Java的变量初始化,对整形及整形数组的元素,未赋值的均初始化为0.(不像c中还有什么UVF……dts又乱入了)

版权声明:完整版Leetcode题解请出门左转https://github.com/cmershen1/leetcode/tree/master/docs

LeetCode --- 66. Plus One

题目链接:Plus One Given a non-negative number represented as an array of digits, plus one to the number...
  • makuiyu
  • makuiyu
  • 2015年03月19日 21:53
  • 7173

leetcode66-Plus One(加1问题)

问题描述:Given a non-negative number represented as an array of digits, plus one to the number.The digit...
  • will130
  • will130
  • 2016年04月17日 22:20
  • 237

[leetcode] 66. Plus One 解题报告

题目链接:https://leetcode.com/problems/plus-one/ Given a non-negative number represented as an array o...
  • qq508618087
  • qq508618087
  • 2015年12月27日 11:13
  • 292

LeetCode(66)Plus One

题目Given a non-negative number represented as an array of digits, plus one to the number.The digits a...
  • fly_yr
  • fly_yr
  • 2015年08月18日 15:38
  • 1053

【leetcode】66. Plus One【java】

Given a non-negative number represented as an array of digits, plus one to the number. The digits a...
  • cslbupt
  • cslbupt
  • 2016年12月17日 15:43
  • 437

LeetCode 66 — Plus One(C++ Java Python)

题目:http://oj.leetcode.com/problems/plus-one/ Given a non-negative number represented as an arra...
  • dragon_dream
  • dragon_dream
  • 2014年04月02日 08:53
  • 3334

Plus One python 题解

Plus One python 题解
  • xiaolewennofollow
  • xiaolewennofollow
  • 2015年04月23日 20:15
  • 852

[leetcode-66]plus one(java)

问题描述: Given a non-negative number represented as an array of digits, plus one to the number.The dig...
  • zdavb
  • zdavb
  • 2015年07月30日 22:48
  • 682

[leetcode]Plus One C语言

【题目】 Given a non-negative number represented as an array of digits, plus one to the number. The di...
  • noc_lemontree
  • noc_lemontree
  • 2015年08月27日 15:23
  • 680

【LeetCode with Python】 Plus One

Given a non-negative number represented as an array of digits, plus one to the number. The digits a...
  • nerv3x3
  • nerv3x3
  • 2014年07月06日 15:21
  • 2614
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Easy-题目30:66. Plus One
举报原因:
原因补充:

(最多只允许输入30个字)