剑指offer双指针21.调整数组顺序使奇数位于偶数前面
Posted trevo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer双指针21.调整数组顺序使奇数位于偶数前面相关的知识,希望对你有一定的参考价值。
题目链接:https://leetcode-cn.com/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/
双指针
class Solution {
public:
vector<int> exchange(vector<int>& nums) {
int i = 0;
int j = nums.size() - 1;
while(i < j)
{
if(nums[j] % 2 == 0)
j--;
else if(nums[i] % 2 == 1)
i++;
else
swap(nums[i], nums[j]);
}
return nums;
}
};
双指针 + 位运算
class Solution {
public:
vector<int> exchange(vector<int>& nums) {
int i = 0;
int j = nums.size() - 1;
while(i < j)
{
if((nums[j] & 1) != 1)
j--;
else if((nums[i] & 1) != 0)
i++;
else
swap(nums[i], nums[j]);
}
return nums;
}
};
快慢指针
与上面指针的初始指向不同,刚开始i=j=0;
j为快指针,i为慢指针
i用来记录下一个要交换偶数的位置
j用来奇数
class Solution {
public:
vector<int> exchange(vector<int>& nums) {
int i = 0, j = 0;
while (j < nums.size())
{
if (nums[j] & 1) //找奇数
{
swap(nums[i], nums[j]);
i ++;
}
j ++;
}
return nums;
}
};
以上是关于剑指offer双指针21.调整数组顺序使奇数位于偶数前面的主要内容,如果未能解决你的问题,请参考以下文章
算法剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
乱序版 ● 剑指offer每日算法题打卡题解—— 双指针(题号21,57,58)
双100%解法剑指 Offer 21. 调整数组顺序使奇数位于偶数前面