Leetcode每日一題:992.sort-array-by-parity-ii(按奇偶排序陣列Ⅱ)
思路:
法1:建立一個與原陣列同大小的陣列res,兩次遍歷A,偶數放入res的偶下標,奇數放入奇下標;
法2:雙指標;
法3:雙端佇列,遍歷A,計數插入前端,偶數插入尾端,然後雙指標(1首1尾)對佇列遍歷,交換位置即可;
//兩次遍歷
class Solution {
public:
vector<int> sortArrayByParityII(vector<int>& A) {
int n = A.size();
vector<int> ans(n);
int i = 0;
for (int x: A) {
if (x % 2 == 0) {
ans[i] = x;
i += 2;
}
}
i = 1;
for (int x: A) {
if (x % 2 == 1) {
ans[i] = x;
i += 2;
}
}
return ans;
}
};
//雙指標
class Solution {
public:
vector<int> sortArrayByParityII(vector<int>& A) {
int n = A.size();
int j = 1;
for (int i = 0; i < n; i += 2) {
if (A[i] % 2 == 1) {
while (A[j] % 2 == 1) {
j += 2;
}
swap(A[i], A[j]);
}
}
return A;
}
};
//雙端佇列
vector<int> sortArrayByParityII(vector<int> &A)
{
int len = A.size();
deque<int> q;
for (int i = 0; i < len; i++)
{
if ((i & 1) != (A[i] & 1))
{
//奇數插入到首段,偶數插入到尾端
if (i & 1)
{
q.push_front(i);
}
else
{
q.push_back(i);
}
}
}
int start = 0, end = q.size() - 1;
while (start < end)
{
int temp=A[q[start]];
A[q[start]]=A[q[end]];
A[q[end]]=temp;
start++;
end--;
}
return A;
}
相關文章
- LeetCode每日一題: 按奇偶排序陣列(No.905)LeetCode每日一題排序陣列
- LeetCode每日一題: 按奇偶排序陣列 II(No.27)LeetCode每日一題排序陣列
- 【LeetCode】905.按奇偶排序陣列LeetCode排序陣列
- PHP 實現按奇偶排序陣列PHP排序陣列
- 922. 按奇偶排序陣列 II (java)排序陣列Java
- 面試題:陣列按列排序的問題面試題陣列排序
- LeetCode每日一題:刪除排序陣列中的重複項(No.26)LeetCode每日一題排序陣列
- 【每日一題】快照陣列每日一題陣列
- LeetCode每日一題: 旋轉陣列(No.189)LeetCode每日一題陣列
- 每日一題 [26] 刪除排序陣列中的重複項每日一題排序陣列
- LeetCode每日一題: 有序陣列的平方(No.977)LeetCode每日一題陣列
- LeetCode每日一題:找陣列的中心索引(No.724)LeetCode每日一題陣列索引
- LeetCode每日一題:合併兩個有序陣列(No.88)LeetCode每日一題陣列
- LeetCode每日一題: 陣列形式的整數加法(No.989)LeetCode每日一題陣列
- js 漢字陣列按拼音排序JS陣列排序
- 【LeetCode】Sort Colors 陣列排序LeetCode陣列排序
- PHP 二維陣列, 按某一個欄位排序PHP陣列排序
- 每日一道演算法題--leetcode 26--刪除排序陣列中重複項--python演算法LeetCode排序陣列Python
- 每日一練(24):在排序陣列中查詢數字排序陣列
- LintCode 奇偶分割陣列陣列
- 陣列物件按物件某個屬性排序陣列物件排序
- LeetCode每日一題: 轉置矩陣(No.867)LeetCode每日一題矩陣
- 每日一題 - 劍指 Offer 53 - I. 在排序陣列中查詢數字 I每日一題排序陣列
- LeetCode 1329按矩陣對角線排序(java)LeetCode矩陣排序Java
- LeetCode1122. 陣列的相對排序(20201114每日一題)LeetCode陣列排序每日一題
- 經典演算法題每日演練——第二十二題 奇偶排序演算法排序
- 多維陣列按鍵名進行重新排序陣列排序
- 每日一題(94) - 堆排序每日一題排序
- LeetCode刷題—陣列LeetCode陣列
- 每日一道 LeetCode (19):合併兩個有序陣列LeetCode陣列
- leetcode每日一題LeetCode每日一題
- 輸入一個整數陣列,輸出奇偶數相間排列的陣列陣列
- 陣列排序函式-php陣列函式(一)陣列排序函式PHP
- LeetCode題解(0330):按要求補齊陣列(Python)LeetCode陣列Python
- 記一次陣列操作:陣列 A 根據陣列 B 排序陣列排序
- Leetcode每日一題:925Long Pressed Name(長按鍵入)LeetCode每日一題
- LeetCode 關於陣列的相對排序LeetCode陣列排序
- LeetCode 33——搜尋旋轉排序陣列LeetCode排序陣列