纪念开始刷Leetcode的第一天,先从数组部分最简单的题开始。
https://leetcode.com/problems/sort-array-by-parity/
本题要求把一个数组的偶数放到前面,奇数放到后面。
知识扫盲:
Vector的用法:vector(begin,end):复制[begin,end)区间内另一个数组的元素到vector中,解法一用到
解法一:
利用2个游标,进行交换,标准是到两个游标相遇停止。
代码如下:
class Solution {
public:
vector<int> sortArrayByParity(vector<int>& A) {
vector<int> a(A.begin(), A.end());
int i=0;
int j=a.size() - 1;
while(i < j)
{
while(i < j && a[i]%2 == 0) i++;
while(i < j && a[j]%2 == 1) j--;
if(i < j)
{
swap(a[i++], a[j--]);
}
}
return a;
}
};
解法二:
速度不如第一种高,但是也可以
方法就是从头到尾遍历数组,如果遇到偶数就把它交换到前面,用两个变量分别记住交换的位置和遍历到达的位置。
class Solution {
public:
vector<int> sortArrayByParity(vector<int>& A) {
vector<int> ans(A.begin(), A.end());
int i=0;
int j=ans.size();
for(int t=0; t<j; t++)
{
if(ans[t] % 2 == 0)
{
swap(ans[i], ans[t]);
i++;
}
}
return ans;
}
};