【LeetCode】Plus One解題レポート

2363 ワード

【LeetCode】Plus One解題レポート
[LeetCode]
https://leetcode.com/problems/plus-one/
Total Accepted: 99274 Total Submissions: 294302 Difficulty: Easy
Question
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.
Ways
1つの配列を表す整数+1で、非常に簡単に見えるテーマです.しかし、Googleが一番好きな面接問題だそうです.
まず、私が考えた最初の方法は、この配列を文字列に変換し、文字列を整数に変換し、+1後に配列に変換することです.面倒くさい!また,コードコミット後にオーバーフローが発見されたのは,与えられた1つの数のビット数が特に多く,1つのintでは表現できないということである.だからおとなしい方法しか使えないでしょう.
考えは最下位から見て、こちらが9なら0に、そうでなければ+1、さらに前を見て、9でないまで.
演算が終了した後、最上位が0の場合、この数のすべてのビット数が9であることを説明するには、新しい配列を作成し、最高位置を1にする必要があります.
この考えは確かに加算の最も基本的な考えだ.最も一般的なものから正確な表現のアルゴリズムを見つける必要があることを説明します.
public class Solution {
    public int[] plusOne(int[] digits) {
        for(int i=digits.length-1; i>=0; i--){
            if(digits[i]==9){
                digits[i]=0;
                continue;
            }else{
                digits[i]+=1;
                break;
            }
        }

        if(digits[0]==0){
          int[] answer=new int[digits.length + 1];
            answer[0]=1;
            return answer;
        }else{
            return digits;
        }
    }
}

AC:0ms
Date
2016年05月8日