首页 > 代码库 > LeetCode066 Plus One C语言
LeetCode066 Plus One C语言
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.
题意:一个非负的整数用数组的形式保存着。其中高位在a[0]。然后对这个数做加1操作,返回这个数组。
PS:原谅我又么有读懂题意---!
/** * Return an array of size *returnSize. * Note: The returned array must be malloced, assume caller calls free(). */ int* plusOne(int* digits, int digitsSize, int* returnSize) { int i; int index=0; int carry=0; int flag=1; //感觉是偷了个懒,只有全是9的时候才进1.。。。。。所以 //只有个位数加1,不是每个都加,所以用flag for(i=digitsSize-1;i>=0;i--){ //不是每个都加1 if(digits[i]+flag+index>9){ digits[i]=0; index=1; if(i==0){ carry=1; } }else{ digits[i]=digits[i]+1; break; } flag=0; // printf("%d",digits[i]); } //这个值也得写明白,不然程序不知道??? *returnSize=digitsSize+carry; if(carry){ int *newdigits=(int*)malloc(sizeof(int)*digitsSize+1); newdigits[0]=1; for(i=1;i<digitsSize+1;i++){ newdigits[i]=0; } return newdigits; }else{ return digits; } }
PS:迷迷糊糊就写完了。。。。。不执行。。。。。看了一下网上的程序貌似最后还要返回那个returnSize。。。。。。。。。。。。。。这才可以。
其实只有全是9的时候才会产生首位进位。。。。。。。。。。。
LeetCode066 Plus One C语言
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。