LintCode 奇偶分割陣列

chi633發表於2017-12-21

題目

分割一個整數陣列,使得奇數在前偶數在後。

樣例 給定[1, 2, 3, 4],返回[1, 3, 2, 4]。

分析

這道題其實很熟悉。將奇數排在前,偶數排在後

是不是和快速排序中的partiton演算法很類似。其實是類似的。

設定兩個指標,一頭一尾,分別尋找偶數和奇數

程式碼

public class Solution {
    /**
     * @param nums: an array of integers
     * @return: nothing
     */
    public void partitionArray(int[] nums) {
        // write your code here;
        int i=0;
        int j=nums.length - 1;
        while(i<j){
            while(nums[i]%2==1){
                i++;
            }
            while(nums[j]%2==0){
                j--;
            }
            if(i<j){
                nums[i]=nums[i]+nums[j];
                nums[j]=nums[i]-nums[j];
                nums[i]=nums[i]-nums[j];
            }

        }
    }
}
複製程式碼

相關文章