返回新產品的數組例如:考慮到個位數,正整數數組,轉換爲整數,乘以2,每個數字在陣列
[1,2,3] -> [2,4,6]
[9,1] -> [1,8,2]
[6,7,5] -> [1,3,5,0]
我得到這個問題上我第一次技術採訪昨天(做在C,因爲這是我最好的語言,所以C的答案會更有幫助),並完全空白:( 這就是我在想什麼:
開始在數組的末尾,並保持向左移動 在每個arr[i]
處,乘以2,看看是否有2位數(如果arr[i]/10 != 0
)並且如果有最左邊的數字,則將其攜帶到arr[i-1]
,只要a[i-1] != NULL
。
我只是無法弄清楚如何真正在C.爲此,我有這樣的事情:
int* multTwo(int* arr, int len) {
int *newarr; // I know i have to malloc, but not sure what size because
// wouldnt the size depend on the new number's size?
int temp, i;
for (i=len-1; i>=0; i--) {
temp = arr[i]*2;
newarr[i] = temp%2;
if(temp/10 != 0)
newarr[i-1] = temp/2;
}
return newarr;
}
但也有我的代碼有很多錯誤。有更好的方法還是我在正確的軌道上?
開始分配足夠的緩衝區,並將其分配給'newarr'。 「 – MikeCAT
」不會取決於新號碼的大小嗎?「它會。現在新號碼可能有多大?你知道舊號碼的大小。 –