劍指Offer 調整陣列順序使奇數字於偶數前面

2022-01-12 14:52:50 字數 942 閱讀 7345

劍指offer:調整陣列順序使奇數字於偶數前面

題目描述:

輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有奇數字於陣列的前半部分,所有偶數字於陣列的後半部分。

解題思路1:

新建乙個vector陣列,將重新排序好的奇偶數傳入;

使用兩個指標,進行遍歷vector陣列,找到奇數就放在vector陣列的起始位置,再j++;

找到偶數在將該值賦值給新建的vector陣列,k++;

一開始想著不開闢新的記憶體空間,但是通過上面方法,進行單個陣列遍歷時,若找到偶數在陣列尾部開始賦值時,會改變原陣列的內容,所以必須重新建立乙個vector陣列。

注意:

當vector陣列只有乙個元素時,直接返回。

下面時使用雙指標,同時遍歷,時間空間都提高了很多。

class

solution

for(i=

0; i++i)

if(nums[i]%2

==0)}

return data;}}

;

解題思路2:

通過雙指標進行遍歷vector陣列時,兩邊向中間收縮;

從vector陣列前部開始遍歷,元素為奇數,不交換,再重新遍歷,並且保證左指標的值小於右指標的值;

同時從vector陣列後面進行,元素為偶數不交換,這樣同時遍歷可以減少迴圈,提高效率。

注意:

左右指標數值一定不能越界,兩邊同時向內收縮。

注意邊界問題,若越界可能會由於前面改變了元素,而訪問的不是原vector陣列元素。

class

solution

return nums;}}

;

劍指offer 調整陣列順序

時間限制 1秒 空間限制 32768k 本題知識點 陣列 題目描述 輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。首先想到的是利用兩個輔助陣列,乙個儲存奇數,乙個儲存偶數,這樣的...

劍指offer(調整陣列順序)

輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。1 暴力解法 從前到位掃瞄陣列,如果出現前面是偶數後面是奇數的情況,則交換。其中使用氣泡排序的思想。從後面朝前比較,使用外迴圈控制趟...

劍指offer(十三) 調整陣列順序

題目描述 輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。題解 思路簡單的解法就是,建兩個臨時陣列,乙個奇數陣列,乙個偶數陣列,最後再組合起來即可,時間複雜度為o n 一解 pub...