《算法通关指南:数据结构和算法篇 --- 顺序表相关算法题》--- 1.移动零,2.颜色分类

🔥小龙报:个人主页
🎬作者简介:C++研发,嵌入式,机器人方向学习者
❄️个人专栏:《C语言》《算法》KelpBar海带Linux智慧屏项目
✨永远相信美好的事情即将发生

文章目录
- [《算法通关指南:数据结构和算法篇 --- 顺序表相关算法题》--- 1.移动零,2.颜色分类](#《算法通关指南:数据结构和算法篇 --- 顺序表相关算法题》--- 1.移动零,2.颜色分类)
- 前言
- 一、移动零
- 二、颜色分类
- [总结 --- 每日励志时刻](#总结 --- 每日励志时刻)
前言
本系列讲解算法竞赛的数据结构在算法竞赛中,我们主要关心的其实是时间开销,空间上是基本够用的,因此我们是使用庞大的数组实现的话不多说冲!
一、移动零
1.1题目
链接:移动零

1.2算法原理
核心思想:数组分两块

1.3代码
c
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int cur = -1;
for(int i = 0;i < nums.size();i++)
{
if(nums[i]) //非零
{
swap(nums[++cur],nums[i]);
}
}
}
};
二、颜色分类
2.1题目
链接:颜色分类

2.2算法原理
核心思想:数组分三块

2.3代码
c
class Solution {
public:
void sortColors(vector<int>& nums) {
int left = -1;
int right = nums.size();
int i = 0;
while(i < right)
{
if(nums[i] == 0)
swap(nums[i++],nums[++left]);
else if(nums[i] == 1)
i++;
else if(nums[i] == 2)
swap(nums[i],nums[--right]);
}
}
};
总结 --- 每日励志时刻
