905. Sort Array By Parity

无人久伴 提交于 2020-03-01 07:40:54

leetcode 上面有900多道题了?

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.

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

先放代码,如下:

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;
    }
}

 

原理图如下:

 

收工!

 

 

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!