922. Sort Array By Parity II
【题目】
Given an array A of non-negative integers, half of the integers in A are odd, and half of the integers are even.
Sort the array so that whenever A[i] is odd, i is odd; and whenever A[i] is even, i is even.
You may return any answer array that satisfies this condition.
Example 1:
Input: [4,2,5,7]
Output: [4,5,2,7]
Explanation: [4,7,2,5], [2,5,4,7], [2,7,4,5] would also have been accepted.
Note:
2 <= A.length <= 20000A.length % 2 == 00 <= A[i] <= 1000
【题意】
奇数的index放置奇数元素,偶数的index放置偶数元素,返回。
【解答】
两个指针,一个从前到后扫描偶数index,一个从后到前扫描奇数index,swap不符合要求的元素
时间 O(N) 空间O(1)
class Solution { public: vector<int> sortArrayByParityII(vector<int>& A) { int len = A.size(); int i = 0, j = len - 1; while(i<len && j>=0){ if(A[i] % 2 == 0){ i += 2; continue; } if(A[j] % 2 != 0){ j -= 2; continue; } int temp = A[j]; A[j] = A[i]; A[i] = temp; } return A; } };

浙公网安备 33010602011771号