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