905. Sort Array By Parity

leetcode 上面有900多道题了?java

905. Sort Array By Parity数组

题意:给定一个一维数组,将数组中的偶数移动到数组的首部,奇数放在数组的尾部。指针

Input: [3,1,2,4]
Output: [2,4,3,1]
The outputs [4,2,3,1], [2,4,1,3], and [4,2,1,3] would also be accepted.

一看就知道用双指针。一个在数组头,一个在数组尾。左边的指针判断指向的值是不是奇数,是就判断右边指针是不是偶数。当左指针知足奇数,同时右指针知足偶数时,交换两边的值。若是左指针的值不是奇数,则+1.若是右边的指针不是偶数,则+1.code

两个指针相遇,说明相遇的点的左面全是偶数,相遇点的右面全是奇数,完成。blog

先放代码,以下:leetcode

class Solution {
    public int[] sortArrayByParity(int[] A) {
        if( A == null) return A;
        
        int l = 0;
        int r = A.length - 1;
        int temp ;
        while (l < r){
            if(A[l] % 2 == 1 && A[r] % 2 == 0){
                temp = A[l];
                A[l] = A[r];
                A[r] = temp;
                l++;
                r--;
            }
            
            if(A[l] % 2 == 0){
                l++;
            }
            
            if(A[r] % 2 == 1){
                r--;
            }
        }
        return A;
    }
}

 

原理图以下:it

 

收工!io

相关文章
相关标签/搜索