###### tags: `Leetcode` `easy` `pointer` `swap` `python` `c++`
# 905. Sort Array By Parity
## [題目連結:] https://leetcode.com/problems/sort-array-by-parity/description/
## 題目:
Given an integer array ```nums```, move all the even integers at the beginning of the array followed by all the odd integers.
Return **any array** that satisfies this condition.
**Example 1:**
```
Input: nums = [3,1,2,4]
Output: [2,4,3,1]
Explanation: The outputs [4,2,3,1], [2,4,1,3], and [4,2,1,3] would also be accepted.
```
**Example 2:**
```
Input: nums = [0]
Output: [0]
```
## 解題想法:
* 題目為將數組中:
* 偶數放數組前面
* 奇數放數組後面
* 使用pointer判斷當前奇、偶並交換即可
## Python:
``` python=
class Solution(object):
def sortArrayByParity(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
head=0 #判斷當前是否為偶數
tail=len(nums)-1 #判斷當前是否為奇數
while head<=tail:
if (nums[head]%2)!=0: #奇數
nums[head],nums[tail]=nums[tail],nums[head]
tail-=1 #往前
else:
head+=1 #為偶數正常往後判斷
return nums
if __name__=='__main__':
result=Solution()
ans=result.sortArrayByParity(nums = [3,1,2,4])
print(ans) #[4, 2, 1, 3]
```
## C++:
``` cpp=
class Solution {
public:
vector<int> sortArrayByParity(vector<int>& nums) {
int head=0, tail=nums.size()-1;
while (head<=tail){
if (nums[head]%2!=0){
swap(nums[head],nums[tail]);
tail-=1;
}
else
head+=1;
}
return nums;
}
};
```