算法攻略:顺序表的进阶之路——移除元素

devtools/2025/1/7 20:45:37/

题目如下:

在这里插入图片描述

思路:

双指针法

  1. nums[src] == val,src++
  2. nums[src] != val,src的值赋值给dst,src和dst都++

注:
1)双指针法:只是抽象出了两个指向数组的变量,并不是真的指针。
2)本题中,src(source)变量在前面探路,也就是找val值;dst(destination)变量在后面站岗,也就是保存val值。

以示例1为例,上述思路对应的每一步变化如下图所示:
在这里插入图片描述

画完思路图后,我们发现:

  1. 题意中的k就是变量dst,也就是函数返回的是dst。
  2. 这是一个循环,当src等于数组元素个数(numsSize)的时候,就不会与val进行比较,所以可以将src的范围作为循环判断的条件:src<numsSize时,进入循环;src>=numsSize时,跳出循环。

写完代码后,我们发现会有重复的代码,可以提出来让它单独成一行:

在这里插入图片描述
最终代码会被简化成以下形式:

int removeElement(int* nums, int numsSize, int val) {//双指针变量int src = 0, dst = 0;while (src < numsSize){if (nums[src] != val){nums[dst] = nums[src];dst++;}src++;}return dst;
}

最后就可以运行自测然后提交啦~
在这里插入图片描述

时间复杂度:O(n),空间复杂度:O(1)

最后的最后,附上示例2中对应的每一步变化图~

在这里插入图片描述


http://www.ppmy.cn/devtools/147960.html

相关文章

springboot540公司资产网站(论文+源码)_kaic

摘 要 信息数据从传统到当代&#xff0c;是一直在变革当中&#xff0c;突如其来的互联网让传统的信息管理看到了革命性的曙光&#xff0c;因为传统信息管理从时效性&#xff0c;还是安全性&#xff0c;还是可操作性等各个方面来讲&#xff0c;遇到了互联网时代才发现能补上自古…

为什么深度学习和神经网络要使用 GPU?

为什么深度学习和神经网络要使用 GPU&#xff1f; 本篇文章的目标是帮助初学者了解 CUDA 是什么&#xff0c;以及它如何与 PyTorch 配合使用&#xff0c;更重要的是&#xff0c;我们为何在神经网络编程中使用 GPU。 图形处理单元 (GPU) 要了解 CUDA&#xff0c;我们需要对图…

PyTorch 自动混合精度AMP Grad Scaler 源码解析:_unscale_grads_ 与 unscale_ 函数

PyTorch AMP Grad Scaler 源码解析&#xff1a;_unscale_grads_ 与 unscale_ 函数 引言 本文详细解析 PyTorch 自动混合精度&#xff08;AMP&#xff09;模块中 grad_scaler.py 文件的两个关键函数&#xff1a;_unscale_grads_ 和 unscale_。这些函数在梯度缩放与反缩放过程中…

python 回溯算法(Backtracking)

回溯算法&#xff08;Backtracking&#xff09;是一种通过试错的方式寻找问题的解的算法设计方法。它通常用于解决组合问题&#xff0c;通过递归地尝试所有可能的解&#xff0c;并在发现当前路径不可能得到解时回退&#xff08;回溯&#xff09;。以下是使用Python实现回溯算法…

在 Windows 上使用 SSH 密钥访问 Linux 服务器

本章目录: 前言1. 准备工作2. 生成 SSH 密钥对步骤 1&#xff1a;打开命令行步骤 2&#xff1a;运行 ssh-keygen 命令步骤 3&#xff1a;选择密钥保存位置步骤 4&#xff1a;设置密钥密码&#xff08;可选&#xff09;步骤 5&#xff1a;生成密钥对 3. 查看生成的密钥文件4. 将…

LeetCode:106.从中序与后序遍历序列构造二叉树

跟着carl学算法&#xff0c;本系列博客仅做个人记录&#xff0c;建议大家都去看carl本人的博客&#xff0c;写的真的很好的&#xff01; 代码随想录 LeetCode&#xff1a;106.从中序与后序遍历序列构造二叉树 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder …

解锁 CSS Grid 的奇妙世界,探寻前端布局的无限可能

文章目录 一、引言二、CSS Grid 基础入门&#xff08;一&#xff09;基本概念解读&#xff08;二&#xff09;关键属性剖析 三、CSS Grid 实用技巧大放送&#xff08;一&#xff09;打造响应式布局&#xff08;二&#xff09;实现复杂的网格结构&#xff08;三&#xff09;灵活…

【论文阅读】SCGC : Self-supervised contrastive graph clustering

论文地址&#xff1a;SCGC : Self-supervised contrastive graph clustering - ScienceDirect 代码地址&#xff1a; https://github.com/gayanku/SCGC 摘要 图聚类旨在发现网络中的群体或社区。越来越多的模型使用自编码器&#xff08;autoencoders&#xff09;结合图神经网…