My code:
public class Solution {
public int[] plusOne(int[] digits) {
if (digits == null || digits.length == 0)
return null;
int[] plusOne = new int[digits.length + 1];
int carry = 1;
for (int i = digits.length; i >=0; i--) {
if (i > 0) {
int temp = digits[i - 1];
temp = temp + carry;
if (temp >= 10) {
temp = temp - 10;
carry = 1;
plusOne[i] = temp;
}
else {
plusOne[i] = temp;
carry = 0;
}
}
else {
if (carry == 1)
plusOne[i] = 1;
else {
int[] copy = new int[digits.length];
for (int j = 0; j < digits.length; j++)
copy[j] = plusOne[j + 1];
plusOne = copy;
}
}
}
return plusOne;
}
public static void main(String[] args) {
Solution test = new Solution();
int[] digits = {0};
System.out.println(test.plusOne(digits));
}
}
My test result:
这次题目不是很难。就类似于自己写一个加法器。把每个数逐渐加上去,并且通过 carry进位来实现加法器。
**
总结:加法器。
感觉妹子的担子很大,我现在可能还能陪她聊聊,等我出去了,基本都得她一个人来面对了。不知道该说什么,因为说什么,我也帮不了什么,做不了什么。
一句话吧,希望你好运,一切平安。
**
Anyway, Good luck, Richardo!
My code:
public class Solution {
public int[] plusOne(int[] digits) {
if (digits == null || digits.length == 0)
return null;
int s = 1;
for (int i = digits.length - 1; i >= 0; i--) {
if (digits[i] + s <= 9) {
digits[i] += s;
s = 0;
}
else {
int sum = (digits[i] + s);
digits[i] = sum % 10;
s = sum / 10;
}
}
/** copy original digits and extend it */
if (s >= 1) {
int[] ret = new int[digits.length + 1];
for (int i = ret.length - 1; i >= 1; i--)
ret[i] = digits[i - 1];
ret[0] = s;
return ret;
}
else
return digits;
}
}
很简单的一道题目,错了好几次,一开始理解错题意了,以为是二进制的。
Anyway, Good luck, Richardo!