LeetCode: 905. Sort Array By Parity
题目描述
Given an array A of non-negative integers, return an array consisting of all the even elements of A, followed by all the odd elements of A.
You may return any answer array that satisfies this condition.
Example 1:
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.
Note:
1 <= A.length <= 5000
0 <= A[i] <= 5000
解题思路
一个游标从左到右查找奇数,一个游标从右向左查找偶数,然后交换这两个数的位置。重复上述过程直到两游标相遇。
AC 代码
class Solution {
public:
vector<int> sortArrayByParity(vector<int>& A) {
vector<int> ans(A.begin(), A.end());
int i = 0, j = ans.size()-1;
while(i < j)
{
while(i < j && ans[j]%2 == 1) --j;
while(i < j && ans[i]%2 == 0) ++i;
if(i < j) swap(ans[i++], ans[j--]);
}
return ans;
}
};
本文介绍了解决LeetCode上905题SortArrayByParity的方法,该题要求将数组中的所有偶数元素放在前面,所有奇数元素放在后面。文章详细解释了使用双指针技巧来实现这一目标的具体步骤。

1118

被折叠的 条评论
为什么被折叠?



