Leetcode* 66 加一
阿新 • • 發佈:2018-12-08
題目:
給定一個由整陣列成的非空陣列所表示的非負整數,在該數的基礎上加一。
最高位數字存放在陣列的首位, 陣列中每個元素只儲存一個數字。
你可以假設除了整數 0 之外,這個整數不會以零開頭。
示例 1:
輸入: [1,2,3]
輸出: [1,2,4]
解釋: 輸入陣列表示數字 123。
示例 2:
輸入: [4,3,2,1]
輸出: [4,3,2,2]
解釋: 輸入陣列表示數字 4321。
這是我的程式碼,不知道為什麼,總是有一種為[0]的陣列無法通過測試。求各位指點一下。
/** * 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 n=1,i=0; while(digits[i]!='\0') { if(digits[i]!=9) { n=0; break; } i++; } int *plus; plus=(int *)malloc(sizeof(int)*(digitsSize+n)); digits[digitsSize-1]++; for(i=digitsSize-1;i>=0;i--) plus[n+i]=digits[i]; if(n) plus[0]=1; for(i=digitsSize+n-1;i>=n;i--) { if(plus[i]>9) { plus[i]=0; if(n==0) {if(i) plus[i-1]++; } else if(i>=2) plus[i-1]++; } } *returnSize=digitsSize+n; return plus; }
昨天想了好久都沒找出錯誤原因~在泥潭中掙扎啊啊啊。