輸入一整數陣列,調整陣列中數字的順序,使奇數字於陣列的前半部分,偶數字於陣列的後半部分兩個指標a, b. a指向開始 b指向結束。
向中間移動指標,當a指向偶數, b指向奇數時,交換位置。
當 a > b時,表示已經結束,得到移動後的陣列
public
static
void
reorder
(int
num)
int left =0;
int right = num.length -1;
while
(left < right)
elseif(
(num[left]&1
)==0)
elseif(
(num[right]&1
)==1)
else
}}
如果要求奇數偶數保持原來順序, 可以用乙個輔助陣列,統計出奇數的數量k,遍歷陣列,奇數從0開始存入,偶數從k開始儲存
public
static
void
reorder
(int
num)
int k =0;
for(
int val : num)
int[
] copy = num.
clone()
;int i =0;
for(
int val : copy)
else
}}
21 調整陣列順序使奇數字於偶數前面
輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。牛客上的這道題比劍指offer多了乙個條件,就是要保證奇數和奇數,偶數和偶數之間的相對位置不變。最簡單的思路就是新建乙個空間,掃兩遍...
21 調整陣列順序使奇數字於偶數前面
nowcoder 需要保證奇數和奇數,偶數和偶數之間的相對位置不變,這和書本不太一樣。方法一 建立乙個新陣列,時間複雜度 o n 空間複雜度 o n public void reorderarray int nums private boolean iseven int x 方法二 使用冒泡思想,每...
21 陣列 調整陣列順序使奇數字於偶數前面
輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。方法1 新建陣列分別按照陣列中的奇數和偶數進行儲存即可。方法2 類似於插入排序,先用乙個k儲存當前奇數個數,之後將遍歷的奇數放入第k...