【剑指offer】21、调整数组顺序使奇数在偶数前面
生活随笔
收集整理的這篇文章主要介紹了
【剑指offer】21、调整数组顺序使奇数在偶数前面
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
輸入一個整數數組,實現一個函數來調整該數組中數字的順序,使得所有的奇數位于數組的前半部分,所有的偶數位于位于數組的后半部分。
思路一
從前往后掃描數組,遇到一個偶數就把它放到數組末尾,并且把之后的數字往前挪,這也會改變奇數與偶數的相對位置
時間復雜度O(n2)
1 2 3 4 5 6 7
1 3 4 5 6 7 2
1 3 5 6 7 2 4
1 3 5 7 2 4 6
1 3 5 7 4 6 2
1 3 5 7 4 2 6
問題就是出在,當滿足奇數在偶數前面之后,還對偶數部分進行了操作
解決方案:先統計出偶數個數n,然后進行后插n次停止即可。
class Solution { public:void reOrderArray(vector<int> &array) {if (array.size() == 0) return;int length = array.size(), count = 0;for (int i = 0; i < length; i++)if (array[i] % 2 == 0) count++;int i = 0;while (i < length && count){if (array[i] % 2 == 1)i++;else if (array[i] % 2 == 0){int temp = array[i];for (int j = i; j < length - 1; j++)array[j] = array[j+1];array[length-1] = temp;count--;}}} };?
?
?
?
思路二
在數組頭和數組尾設置兩個指針,當第一個指針指向偶數,第二個指針指向奇數,則交換他們的位置,時間復雜度O(n)
但是這會改變奇數與偶數的相對位置
1 2 3 4 5 ->? 1 5 3 4 2
?
轉載于:https://www.cnblogs.com/shiganquan/p/9340920.html
總結
以上是生活随笔為你收集整理的【剑指offer】21、调整数组顺序使奇数在偶数前面的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 生活常识:如何防止家居气体中毒?
- 下一篇: 如何在家中进行有效的家居保养?