当前位置: 首页 > news >正文

leetcode_283.移动零

题目如下

在这里插入图片描述
本道题采用双指针的思想完成,可以使用快慢指针的思想,通过快指针遍历数组找出数组中的非零元素,用慢指针来维护有效值
可以先根据题目的条件手搓出来一个测试,方便理解

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
void moveZeroes(vector<int>& nums) {//方法一:快慢指针int fast=0,slow=0;for(fast=0;fast<nums.size();fast++){if(nums[fast]!=0){nums[slow++]=nums[fast];}}cout<<"fast "<<fast<<'\n';cout<<"slow "<<slow<<'\n';}
int main()
{vector<int>v(5);for(int i=0;i<5;i++){int x;cin>>x;v[i]=x;}moveZeroes(v);for(int i=0;i<5;i++){cout<<v[i]<<" ";}return 0;
}

例如题目的案例一:0 1 0 3 12
先自己模拟一遍,刚开始 fastslow指针都指向 0 号索引,开始向后找,一旦发现不为 0的元素,就将其填在slow索引处,第一次发生在索引为1的时候,经过操作,得到了1 1 0 3 12此时slow进行自增指向索引1,第二次发生在索引为3的时候,经过操作得到了1 3 0 3 12,第三次发生在索引为4的时候,经过操作得到了1 3 12 3 12,最终遍历完毕,fast最后指向了索引5,slow最后指向了索引3
验证一下:
在这里插入图片描述
没错是这样的,这样就找到了数组中所有不为0的数字,且由slow来维护。最后我们只需要将slow-fast之间的数字全部变为0就可以了

		//就相当于slow到数组的最后for(int i=slow;i<nums.size();i++){nums[i]=0;}//两种都可以for(int i=slow;i<fast;i++){nums[i]=0;}

AC代码:

class Solution {
public:void moveZeroes(vector<int>& nums) {//方法一:快慢指针int fast=0,slow=0;for(fast=0;fast<nums.size();fast++){if(nums[fast]!=0){nums[slow++]=nums[fast];}}for(int i=slow;i<fast;i++){nums[i]=0;}}
};

还有另外一种方法:
定义 l 和 r 指针,通过 r 指针遍历数组,找到不为 0 的元素,依次交换 还是以0 1 0 3 12为例子:
刚开始 l 和 r都指向0号索引,r向前遍历,当找到不为0的数字时和索引为 l 的数字进行交换,第一次找到了1l(0)交换得到了1 0 0 3 12此时l 自增->(1),第二次找到了3进行交换,得到了1 3 0 0 12,l自增->(2),第三次找到了12,进行交换得到了1 3 12 0 0即是最终答案,此时l = 3 r= 5
在这里插入图片描述
最终也可以得到正确答案:

AC代码:

class Solution {
public:void moveZeroes(vector<int>& nums) {int l=0,r=0;while(r<nums.size()){if(nums[r]!=0){swap(nums[l],nums[r]);l++;}r++;}}
};

相关文章:

  • 选择与方法(4) 职场内篇 沿着赤道走,到不了北极,找准职场方向,建立可迁移技能
  • 各项目变更频繁时,如何保持整体稳定
  • 技术研究 | 一种检测大模型是否泄露训练数据的新方法
  • 【AI大模型入门指南】概念与专有名词详解 (一)
  • 雷卯针对易百纳EB-SS528-DC-175开发板防雷防静电方案
  • AI视频生成API:一站式视频生成解决方案
  • Java 语言特性(面试系列4)
  • 从0到1落地一个RAG智能客服系统
  • 加性同态加密的原理与函数解析
  • 运维之十个问题篇--3
  • PTA天梯赛L1 041-050题目解析
  • 239. 滑动窗口的最大值
  • C语言:指针进阶(下)
  • 从代码学习深度学习 - 全局向量的词嵌入(GloVe)PyTorch版
  • codeforces C. Devyatkino
  • 建筑末端配电回路安全用电解决方案:筑牢电气防火最后一道防线
  • 华为云Flexus+DeepSeek征文 | 基于华为云ModelArts Studio搭建AnythingLLM聊天助手
  • 边缘计算一:现代前端架构演进图谱 —— 从 SPA 到边缘渲染
  • 【大模型训练】中短序列attention 和MOE层并行方式(二)
  • 深度剖析:UI 设计怎样为小程序构建极致轻量体验
  • 专业帮人做网站号码/怎么优化标题和关键词排名
  • 网站建设话术开场白/seo的工具有哪些
  • wordpress新建页面连接无法访问/seo公司排名
  • 关注网站怎么做/seo关键字优化软件
  • 广东高端网站建设/深圳百度关键
  • 本机可以做网站的服务器吗/百度导航下载2022最新版