給出乙個含有正整數和負整數的陣列,重新排列成乙個正負數交錯的陣列。
給出陣列[-1, -2, -3, 4, 5, 6]
,重新排序之後,變成[-1, 5, -2, 4, -3, 6]
或者其他任何滿足要求的答案
完成題目,且不消耗額外的空間。
不需要保持正整數或者負整數原來的順序。
這道題目比較難,使用o(n)的演算法來做的時候使用雙指標,奇數偶數指標交替向後走的方法。
注意,題目輸入保證了當n為偶數的時候,正數和負數個數是完全相同的。
當n為奇數的時候,正數個數只會比負數個數多1
所以這裡要特別處理正數和負數個數的情況
時間複雜度為o(n), 空間複雜度o(n)。 不改變陣列的順序
class solution
int i=0,j=0,k=0;
// 如果正數個數大於負數的情況
if(postive.size()>nagetive.size())
while(i!=postive.size()) a[k++] = postive[i++];
}// 如果負數個數大於正數的情況
else
while(j!=nagetive.size())a[k++] = nagetive[j++];}}
};
雙指標做法
注意同樣要判斷兩種情況, 時間複雜度為o(n), 這個做法會改變
class solution
if(posnum>=negnum)
else if(i%2==1 && a[i]>0)}}
else
else if(i%2==1 && a[i]<0)
if(posnum>=negnum)
a[i] = temp;
}else if(i%2==1 && a[i]>0)
a[i] = temp;}}
}else
a[i] = temp;
}else if(i%2==1 && a[i]<0)
a[i] = temp;}}
}}
};
lintcode 144 交錯正負數
給出乙個含有正整數和負整數的陣列,重新排列成乙個正負數交錯的陣列。注意事項 不需要保持正整數或者負整數原來的順序。樣例給出陣列 1,2,3,4,5,6 重新排序之後,變成 1,5,2,4,3,6 或者其他任何滿足要求的答案 挑戰原地完成,沒有額外的空間 標籤兩根指標 思路 要實現正負交錯的陣列,原陣...
14 4 選單功能
選單功能就是與使用者的溝通介面。1 在workermanager.h標頭檔案中新增show menu 成員函式。class workermanager 2 在workermanager.cpp中實現show menu 成員函式。其實這個函式就是在螢幕中把選單介面列印出來,沒什麼技術含量。顯示選單 v...
14 4 執行緒的通訊
執行緒通訊 乙個執行緒完成自己的任務時,就要通知另外乙個執行緒去 例子就是生產者與消費者關係 wait 等待。如果執行緒執行了wait方法,那麼該執行緒會進入等待的狀態 notify 喚醒等待的執行緒 注意 1 wait和notify方法是屬於objeck類的。2 wait和notify方法必須是要...