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

Leetcode解题笔记-Plusone

时间:2015-08-08 01:15:22      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:

题目内容:

给定一个int数组,代表一个非负数不同的位, 在这个数字中加上1之后将结果以int数组的形式返回。

个人解法1:

1.现将数组转化为int之后加上1之后再变成数组,这样就可能忽略溢出所以无法通过

个人解法2:

这个解法超级麻烦自己也做不下去了,感觉对于数组操作的部分还不是很熟悉:

1.先定义一个ArraList作为结果集(因为它不定长,不用考虑边界问题),之后对digits上面的每一位进行判断,如果加上1等于10的话digits[i]=0 and carry =1

2.将计算后的结果放入ArrayList中,之后再将ArrayList中的结果进行逆序输出赋值到结果数组里。

3.感觉空间复杂度好高。

个人解法3:

1.这又是一个暴力的解法,定长的数据好是烦人。

2.先对digits进行操作,之后再根据carry对result进行赋值

3.要注意的就是有关进位以后的边界问题。

代码:

public static int[] plusOne(int[] digits){
int len = digits.length;
int carry = 1;
for(int i= len-1; i>=0; --i){
if(digits[i]==9&&carry==1){
digits[i]=0;
carry=1;
}else{
digits[i] +=carry;
carry=0;
}
}
if (carry==0){
int[] result = new int[len];
for(int i=0; i<len;i++){
result[i]=digits[i];
}
return result;
}else{
int[] result = new int[len+1];
result[0]=carry;
for(int i=1; i<len+1;i++){
result[i]=digits[i-1];
}
return result;
}

}

感觉好low

 

Leetcode解题笔记-Plusone

标签:

原文地址:http://www.cnblogs.com/whaochen/p/4709673.html

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