算法:調(diào)整數(shù)組順序使奇數(shù)位于偶數(shù)前面
2022-07-15 14:28 作者:做架構(gòu)師不做框架師 | 我要投稿

輸入一個整數(shù)數(shù)組,實現(xiàn)一個函數(shù)來調(diào)整該數(shù)組中數(shù)字的順序,使得所有奇數(shù)在數(shù)組的前半部分,所有偶數(shù)在數(shù)組的后半部分。
示例
輸入:nums = [1,2,3,4]
輸出:[1,3,2,4]
注:[3,1,2,4] 也是正確的答案之一。
提示
0 <= nums.length <= 50000
0 <= nums[i] <= 10000
方法:首尾雙指針
解題思路:
首先定義 指向首尾的兩個指針,分別是 head 和 tail;
首指針 head 從左向右一直遍歷,找到 偶數(shù);
尾指針 tail 從右向左一直遍歷,找到 奇數(shù);
將頭指針 head 和 尾指針 tail 指向的數(shù)字進(jìn)行 交換;
循環(huán)遍歷直到 首指針 head 和 尾指針 tail 相等。
代碼如下:

復(fù)雜度分析
時間復(fù)雜度: O(N),N 為數(shù)組 nums 長度,雙指針 head, tail 共同遍歷整個數(shù)組。
空間復(fù)雜度:O(1) ,雙指針 head, tail 使用常數(shù)大小的額外空間。
END
本文內(nèi)容出處是力扣官網(wǎng),希望和大家一起刷算法,在后面的路上不變禿但是變強(qiáng)!
好兄弟可以點贊并關(guān)注我的公眾號“javaAnswer”,全部都是干貨。

標(biāo)簽: