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

【数据结构初阶】顺序表三道经典算法题(详解+图例)

Hello!很高兴又见到你了~~~

看看今天要学点什么来充实大脑吧——

目录

1、移除元素

【思路+图解】 

【总结】

2、删除有序数组中的重复项

【思路+图解】

【总结】

3、合并两个有序数组

【思路+图解】

【总结】

 至此结束,Show Time!


1、移除元素

【思路+图解】 

上面的例子第一个数是等于val,当不等于val 时可以自己试一下。新思路的时间复杂度为O(N),空间复杂度为O(N),结合思路我们尝试上代码:

int removeElement(int* nums, int numsSize, int val) 
{int src=0;int dst=0;while(src<numsSize){if(nums[src]==val){src++;}else{nums[dst++]=nums[src++];//src++;//dst++;}}return dst;
}

【总结】

通过把 src 指向的不等于 val 的数赋给 dst 指向的位置,实现把不等于 val 的数放到前面,而且刚好 dst 的值就是数组中不等于 val 的数据的个数,同时要注意循环的条件。

2、删除有序数组中的重复项

【思路+图解】

咱们直接上代码:

在图解第一个步骤中出现了重复赋值的情况。经过 dst +1 后,dst 指向的数据等于2,src 指向的数据也等于2,再把 src 指向数据的值赋给dst,这里出现了重复赋值,我们优化一下代码:

int removeDuplicates(int* nums, int numsSize) 
{int dst=0;int src=1;while(src<numsSize){if(nums[dst]!=nums[src]&&++dst!=src){nums[dst]=nums[src];}src++;}return dst+1;
}

【总结】

通过 src 遍历数组,如果与 dst 指向的数据相等就跳过,不相等就先 dst++,再赋给 dst 指向的位置,限制条件 src<数组长度。这种方法思路清晰!

3、合并两个有序数组

【思路+图解】

思路理清,上代码:

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) 
{int l1=m-1;int l2=n-1;int l3=m+n-1;while(l1>=0&&l2>=0){if(nums1[l1]>nums2[l2]){nums1[l3--]=nums1[l1--];}else{nums1[l3--]=nums2[l2--];}}//出了while循环,要么l1<0,要么l2<0while(l2>=0){nums1[l3--]=nums2[l2--];}
}

【总结】

妙!多理解理解,记住这种方法,悟一悟,反正我太菜想不到这种方法......


  至此结束,Show Time!

完——

童话镇_小野来了_高音质在线试听_童话镇歌词|歌曲下载_酷狗音乐酷狗音乐为您提供由小野来了演唱的高清音质无损童话镇mp3在线听,听童话镇,只来酷狗音乐!icon-default.png?t=N7T8https://t3.kugou.com/song.html?id=8Ceht83CPV2

相关文章:

【数据结构初阶】顺序表三道经典算法题(详解+图例)

Hello&#xff01;很高兴又见到你了~~~ 看看今天要学点什么来充实大脑吧—— 目录 1、移除元素 【思路图解】 【总结】 2、删除有序数组中的重复项 【思路图解】 【总结】 3、合并两个有序数组 【思路图解】 【总结】 至此结束&#xff0c;Show Time&#xff01; 1、…...

SpringBoot接入JPA连接数据库H2或MySQL例子

一&#xff0c;JPA相关的常用注解和对象 Entity&#xff0c;用于实体类声明语句之前&#xff0c;‌指出该Java类为实体类&#xff0c;‌将映射到指定的数据库表&#xff1b;Table&#xff0c;当实体类与其映射的数据库表名不同名时需要使用。‌该标注与Entity标注并列使用&…...

持续集成05--Gogs的安装与使用

前言 在持续集成/持续部署&#xff08;CI/CD&#xff09;的旅程中&#xff0c;版本控制系统是不可或缺的一环。当我们在使用jenkins&#xff0c;想要达到测试脚本有更新&#xff0c;就让项目自动去进行构建&#xff0c;或者当开发脚本有更新&#xff0c;也可以自动去构建的效果…...

C++--fill

把[first,last)之间的元素填充为val。 template<class ForwardIterator, class Type> void fill( ForwardIterator first, //起始迭代器 ForwardIterator last, //结束迭代器 const Type& val //设置的值 );源码剖析 template<class ForwardIterator, c…...

Java:对比一个对象更新前后具体被修改了哪些值

Java&#xff1a;对比一个对象更新前后具体被修改了哪些值 Zyyyyu 的个人博客 遇到一个需求就是要记录每行数据被修改更新后&#xff0c;要记录下当前值和修改前的值 那有人就会说写个if去判断值是否被修改了&#xff0c;然后记录下来不就行了&#xff0c;这是一个思路&#x…...

GO——GMP 好文整理

GMP相关好文推荐&#xff1a; Golang 调度器设计思想、GMP 协程调度模型详解 Golang的协程调度器原理及GMP设计思想 Golang调度器GMP原理与调度全分析...

园区AR导航系统构建详解:从三维地图构建到AR融合导航的实现

随着现代园区规模的不断扩大与功能的日益复杂&#xff0c;传统的二维地图导航已难以满足访客高效、精准定位的需求。园区内部错综复杂的布局、频繁变更的商户位置常常让访客感到迷茫&#xff0c;造成寻路上的时间浪费。园区AR导航系统以创新的技术手段&#xff0c;破解了私域地…...

接口测试总结(非标准)

为什么要做接口测试&#xff1f; 答&#xff1a;接口测试是为了检测系统组件间接口的正确性和稳定性&#xff0c;以及检查数据的交换、传递和控制管理过程&#xff0c;以及系统间的相互逻辑依赖关系等。接口测试可以帮助我们发现系统中的潜在问题&#xff0c;确保系统的稳定性…...

在Ubuntu 18.04上安装和使用Composer的方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 介绍 Composer 是一个流行的 PHP 依赖管理工具&#xff0c;主要用于简化项目依赖项的安装和更新。它会检查特定项目依赖的其他软件包&a…...

ssm 学习 ---(spring)

一、spring框架 1、基本框架 2、Beanfactory快速入门 配置清单&#xff1a;xml文件 (1) 导入jar包或者maven坐标 (2) 定义UserService接口以及UserService实现类 (3) 创建bean.xml配置文件&#xff0c;将UserService信息配置到该xml文件中; (4)编写测试代码&#xff0c;创…...

Jupyter Notebook安装及基本使用

Jupyter Notebook安装及基本使用 目录 Jupyter Notebook安装及基本使用方式一&#xff1a;Anaconda直接安装方式二&#xff1a;pip命令安装Jupyter使用虚拟环境 方式一&#xff1a;Anaconda直接安装 安装Anaconda 下载地址&#xff0c;输入邮箱&#xff0c;Windows下载 开始安…...

Jenkins+Maven+Gitlab+Tomcat自动化构建打包+部署

目录 环境准备 导入项目包 配置jenkins 构建项目 配置项目上线 修改项目代码测试 环境准备 本实操项目环境基于https://blog.csdn.net/Lzcsfg/article/details/140359830 首先在node01主机中操作&#xff0c;本次操作需要java8的版本&#xff0c;将之前安装的java17卸…...

Synchronized升级到重量级锁会发生什么?

我们从网上看到很多&#xff0c;升级到重量锁的时候不会降级&#xff0c;再来线程都是重量级锁 今天我们来实验一把真的是这样的吗 1.首选导入Java对象内存布局的工具库&#xff1a; <dependency><groupId>org.openjdk.jol</groupId><artifactId>jol-…...

【Webpack】HMR 热更新

HMR全称Hot Module Replacement&#xff0c;可以理解为模块热替换&#xff0c;指在应用程序运行过程中&#xff0c;替换、添加、删除模块&#xff0c;而无需重新刷新整个应用。 不使用热更新&#xff0c;我们在应用运行过程中修改了某个模块&#xff0c;通过自动刷新会导致整个…...

【计算机视觉】siamfc论文复现

什么是目标跟踪 使用视频序列第一帧的图像(包括bounding box的位置)&#xff0c;来找出目标出现在后序帧位置的一种方法。 什么是孪生网络结构 孪生网络结构其思想是将一个训练样本(已知类别)和一个测试样本(未知类别)输入到两个CNN(这两个CNN往往是权值共享的)中&#xff0…...

PotatoTool 蓝队版 V1.3 发布:增强功能和性能优化

一、简介 经过广大网友的反馈和建议&#xff0c;我们对V1.1版本中存在的问题进行了优化。其中&#xff0c;我们针对MD5库进行了本地化处理&#xff0c;以提高查询效率。然而&#xff0c;这也导致了软件体积的飙升。二、优化概述 1、兼容性 兼容arm架构系统 2、UI 2.1 界面…...

pytest常用命令行参数解析

简介&#xff1a;pytest作为一个成熟的测试框架&#xff0c;它提供了许多命令行参数来控制测试的运行方式&#xff0c;以配合适用于不同的测试场景。例如 -x 可以用于希望出现错误就停止&#xff0c;以便定位和分析问题。–rerunsnum适用于希望进行失败重跑等个性化测试策略。 …...

pgsql-使用dump命令制作数据库结构、数据快速备份bat脚本

一、背景 通过pgsql的dump命令可以快速的做数据库表结构、表数据的备份&#xff0c;随着业务不断的增加单库单实例已经不能满足业务需要。技术人员是比较懒惰的&#xff0c;每次敲相同命令或是无脑的复制黏贴操作感觉都是对精神的一种摧残&#xff0c;解决摧残的方法就是把命令…...

【3D编程技巧】如何用四元数旋转矢量在相机空间进行光照计算

这里介绍一个小TIPS&#xff0c;很久没有这么有成就感了。我以前在学3D数学的时候&#xff0c;书上就有一句话&#xff0c;说你把矢量这些东西用久了&#xff0c;就应该形成一种“直觉”&#xff0c;仿佛这些东西就是你的左右手一样。而这次&#xff0c;我居然真的用“直觉”来…...

ICMP 和 IGMP 的区别

ICMP 和 IGMP 协议 IP 层分支图 ICMP&#xff08;Internet Control Message Protocol&#xff0c;因特网控制信息协议&#xff09; 用于补充 IP 传输数据报的过程中&#xff0c;发送主机无法确定数据报是否到达目标主机。 ICMP 报文分为出错报告报文和查询报文两种。 若数据…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

省略号和可变参数模板

本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...

用鸿蒙HarmonyOS5实现中国象棋小游戏的过程

下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...

华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)

题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...

【多线程初阶】单例模式 指令重排序问题

文章目录 1.单例模式1)饿汉模式2)懒汉模式①.单线程版本②.多线程版本 2.分析单例模式里的线程安全问题1)饿汉模式2)懒汉模式懒汉模式是如何出现线程安全问题的 3.解决问题进一步优化加锁导致的执行效率优化预防内存可见性问题 4.解决指令重排序问题 1.单例模式 单例模式确保某…...