面試題21.調整數組順序使奇數位於偶數前面

面試題21.調整數組順序使奇數位於偶數前面

題目描述

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

示例:

輸入:nums = [1,2,3,4]
輸出:[1,3,2,4]
注:[3,1,2,4] 也是正確的答案之一。

提示:

1 <= nums.length <= 50000
1 <= nums[i] <= 10000

題解

定義兩個指針,保證第一個指針在第二個指針前面,然後一個從前向後,遇到奇數繼續向後,遇到偶數停止;一個從後向前,遇到偶數繼續向前,遇到奇數停止;交換兩個索引所指的數;代碼如下

class Solution {
    public int[] exchange(int[] nums) {
        int i = 0;
        int j = nums.length-1;
        while(i<j){
            while(nums[i]%2==1&&i<j) i++;
            while(nums[j]%2==0&&j>i) j--;
            if(i<=j){
            int temp = nums[i];
            nums[i] = nums[j];
            nums[j] = temp;
            }
            i++;
            j--;
        }
        return nums;
    }
}
提交結果

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章