剑指offer之【调整数组顺序使奇数位于偶数前面】
生活随笔
收集整理的這篇文章主要介紹了
剑指offer之【调整数组顺序使奇数位于偶数前面】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目要求:
輸入一個整數數組,實現一個函數來調整該數組中數字的順序,使得所有的奇數位于數組的前半部分,所有的偶數位于位于數組的后半部分,并保證奇數和奇數,偶數和偶數之間的相對位置不變。
解題方法:
方法一:時間復雜度O(n^2)
最容易想到:從頭掃描這個數組,每碰到一個偶數時,拿出這個數字,并把位于這個數字后面的所有數字往前挪動一位。挪完之后在數組的末尾有一個空位,這時把該偶數放入這個空位;
方法二:時間復雜度O(n)
重新建立一個向量,然后進行兩次掃描:第一次掃描奇數,第二次掃描偶數,完畢,不廢話,直接上代碼:
1 class Solution{ 2 public: 3 void reOrderArray(vector<int> &array){ 4 int len = array.size(); 5 vector<int> vec(array.begin(),array.end()); 6 int l = 0; 7 for(int x: vec){ 8 if(x%2==1){ 9 array[l++] = x; 10 } 11 } 12 for(int y : vec){ 13 if(y%2 == 0){ 14 array[l++] = y; 15 } 16 } 17 } 18 };?
轉載于:https://www.cnblogs.com/wangshujing/p/6934629.html
總結
以上是生活随笔為你收集整理的剑指offer之【调整数组顺序使奇数位于偶数前面】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java垃圾回收总结
- 下一篇: unity3d为对象添加脚本的两种方法