代码改变世界

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

2026-01-25 22:24  tlnshuju  阅读(0)  评论(0)    收藏  举报

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


在这里插入图片描述

小龙报:个人主页
作者简介:C++研发,嵌入式,机器人方向学习者
❄️个人专栏:《C语言》《算法》KelpBar海带Linux智慧屏项目

永远相信美好的事情即将发生

在这里插入图片描述


前言

本系列讲解算法竞赛的数据结构在算法竞赛中,我们主要关心的其实是时间开销,空间上是基本够用的,因此我们是使用庞大的数组实现的话不多说冲!


一、移动零

1.1题目

链接:移动零
在这里插入图片描述

1.2算法原理

核心思想:数组分两块
在这里插入图片描述

1.3代码

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代码

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]);
  }
  }
  };

总结 — 每日励志时刻

在这里插入图片描述