数据结构与算法——顺序表之手撕OJ题

文章目录

  • 一、前言
  • 二、拿捏OJ题
    • 2.1移除元素
    • 2.2删除有序数组中的重复项
    • 2.3合并两个有序数组
  • 三、总结

一、前言

Do you study today?up在上一次已经讲解完毕了有关顺序表的所有知识,不知道大家是否已经沉淀完毕了呢?有一句老话说得好啊——光看不练假把式。没错,知识的积累就是建立在不断的练习之上,那么今天,up就给大家讲解几道用顺序表相关的OJ算法题,给大家趁热打铁。

二、拿捏OJ题

2.1移除元素

力扣27题移除元素链接
在这里插入图片描述
怎么样,在看完这道题之后,你是否已经有思路了呢?up也相信大家已经思绪万千了,up呢也有一个非常之NB的方法——双指针法。老规矩,up还是先给大家画图分析。
画图分析:
在这里插入图片描述
方法总结:定义两个变量下标都从0开始,让src往后遍历,而dest起一个站岗的作用。如果src为下标的元素不等于val,则赋值给下标为dest的元素,src++,dest++;如果src为下标的元素等于val,则src继续往后遍历,dest保持站岗不变,直到src遍历到数组最后一个元素跳出循环为止,最后dest的值就是不等于val的元素个数。
代码调试及展示:
`

//力扣27题,移除元素
int removeElement(int* nums, int numsSize, int val) {int dest = 0;int src = 0;while (src < numsSize) {if (nums[src] != val) {nums[dest++] = nums[src];}src++;}return dest;
}

2.2删除有序数组中的重复项

力扣26题删除有序数组中的重复项链接
在这里插入图片描述
刚刚我们讲完了移除元素,up相信大家肯定已经都听懂了,接着我们再来看这道题。可能有的宝子会问:“这道题和上面那道题看起来就是一个爹妈生的啊?我猜测还是可以用双指针法解决。”对此,我只能不得不说:猜得真准,哈哈哈。
画图分析:
在这里插入图片描述
方法总结:定义两个变量src和dest,dest初始为0,src初始为dest+1,src依次往后遍历,dest起站岗的作用,如果以src为下标的元素等于以dest为小标的元素,src++,dest不动;如果以src为下标的元素不等于以dest为下标的元素,先让dest++,在把以src为下标的元素的值赋给以dest为下标的元素,src++,直到跳出循环为止,最终dest+1的值就是数组唯一元素的个数。
代码调试及展示:
在这里插入图片描述

//力扣26题
int removeDuplicates(int* nums, int numsSize) {
int dest = 0;
int src = dest + 1;
while (src < numsSize)
{if(nums[dest]!=nums[src] ){dest++;nums[dest] = nums[src];}src++;
}
return dest+1;
}

2.3合并两个有序数组

力扣88题合并两个有序数组链接
以上两道题是有关双指针法解决顺序表的题,现在我们来看最后一道OJ题。
在这里插入图片描述
画图展示:
在这里插入图片描述
在这里插入图片描述
方法总结:依次比较数组num1和数组num2中有效元素的最后一位,值大的元素则先放入num1数组中,从后往前依次遍历,当一个数组遍历完之后,剩下的数组中的剩余元素一定是有序的,在依次放入即可(如果剩余的是大的数组,则无需操作)。
代码测试及展示:
在这里插入图片描述

//力扣88题
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 (l2 >= 0)
{nums1[l3--] = nums2[l2--];
}
}

三、总结

OK兄弟们,上面三道就是比较经典的顺序表的OJ题,我已经给大家分析完毕,up相信大家一定能把这些题消化完毕,玩弄于指尖和键盘之间。还是那句话:要想提升,得多练习。

练习是成功的关键,只有不断地练习,才能够获得更多的经验。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/43352.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在 AI 搜索引擎(GEO)霸屏曝光,快速提升知名度?

虽然大多数人仍然使用 Google 来寻找答案&#xff0c;但正在发生快速转变。ChatGPT、Copilot、Perplexity 和 DeepSeek 等 LLM 已成为主流。这主要是因为每个都有自己的免费和公共版本&#xff0c;并且总是有重大的质量改进。 许多人每天都使用这些工具来提问和搜索互联网&…

4.训练篇2-毕设篇

resnet # 1. 从 torchvision 中加载预训练的 ResNet18 模型 # pretrainedTrue 表示使用在 ImageNet 上预训练过的参数&#xff0c;学习效果更好 base_model_resnet18 models.resnet18(pretrainedTrue)# 2. 获取 ResNet18 模型中全连接层&#xff08;fc&#xff09;的输入特征…

电磁兼容EMC概述

最近重新学了下电磁兼容&#xff0c;对这个东西更清晰了一些&#xff0c;就重新写了一篇&#xff0c;有不足的地方欢迎的大家在评论区里和我交流。 电磁兼容 电磁兼容指的是什么呢&#xff1f;指的是设备在其电磁环境中性能不受降级地正常运行并不对其他设备造成无法承受的电…

坚持“大客户战略”,昂瑞微深耕全球射频市场

北京昂瑞微电子技术股份有限公司&#xff08;简称“昂瑞微”&#xff09;是一家聚焦射频与模拟芯片设计的高新技术企业。随着5G时代的全面到来&#xff0c;智能手机、智能汽车等终端设备对射频前端器件在通信频率、多频段支持、信道带宽及载波聚合等方面提出了更高需求&#xf…

AI赋能职教革新:生成式人工智能(GAI)认证重构技能人才培养新范式

在数字化浪潮的推动下&#xff0c;职业教育正经历着前所未有的变革。面对快速变化的市场需求和技术发展&#xff0c;如何培养具备高技能、高素质的人才成为了职业教育的重要课题。而在这个过程中&#xff0c;人工智能&#xff08;AI&#xff09;技术的融入&#xff0c;无疑为职…

Python:日志管理器配置

日志模块组件&#xff1a; 日志器logger&#xff1a;提供应用程序调用的接口 处理器handler&#xff1a;将日志发送到指定的位置 过滤器filter&#xff1a;过滤日志信息 格式器formatter&#xff1a;格式化输出日志 如何配置日志管理器&#xff1a; #导入模块 import log…

城电科技|零碳园区光伏太阳花绽放零碳绿色未来

近日&#xff0c;珠海城电科技自主研发生产的三轴跟踪光伏太阳花在长沙某智慧零碳园区完成安装调试&#xff0c;正式投入运营。作为集“科技能源艺术”于一体的新能源太阳能光伏发电设备&#xff0c;这一创新艺术光伏景观不仅为园区注入绿色动能&#xff0c;更凭借独特的科技美…

c++ - 右击一个cpp文件,但是编译菜单项是灰的

文章目录 c - 右击一个cpp文件&#xff0c;但是编译菜单项是灰的概述END c - 右击一个cpp文件&#xff0c;但是编译菜单项是灰的 概述 VS2019, 整理工程&#xff0c;在编译&#xff0c;工程报错&#xff0c;说有个函数的实现没找到。 有实现part_opt.cpp&#xff0c;头文件也…

29_项目

目录 http.js 1、先注册账号 register.html 2、再登录 login.html 3、首页 index.html 4 详情 details.html cart.html css index.css register.css details.css 演示 进阶 http.js let baseURL "http://localhost:8888"; let resgiterApi baseURL &…

vmware 创建win10 系统,虚拟机NAT网络设置

虚拟机设置&#xff1a; 物理机本机创建桥接&#xff1a; 如何创建桥接&#xff0c;请自行脑补~

API 请求需要证书认证? 如何在 Postman 中正确配置和使用?

本文来介绍 Postman 提供的管理证书功能如何配置&#xff0c;要了解更多相关的知识&#xff0c;可访问 Postman 证书 模块。 管理客户端证书&#xff0c;点击对应的按钮&#xff0c;首先选择 SETTINGS &#xff0c;然后选择 Certificate 选项卡&#xff0c;如图所示&#xff1…

强大的AI网站推荐(第四集)—— Gamma

网站&#xff1a;Gamma 号称&#xff1a;展示创意的新媒介 博主评价&#xff1a;快速展示创意&#xff0c;重点是展示&#xff0c;在几秒钟内快速生成幻灯片、网站、文档等内容 推荐指数&#xff1a;&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f;&#x…

信息学奥赛一本通 1609:【例 4】Cats Transport | 洛谷 CF311B Cats Transport

【题目链接】 ybt 1609&#xff1a;【例 4】Cats Transport 洛谷 CF311B Cats Transport 【题目考点】 1. 动态规划&#xff1a;斜率优化动规 【解题思路】 解法1&#xff1a;设a点的前缀和 输入的 d d d序列是从 d 2 d_2 d2​到 d n d_n dn​&#xff0c;共n-1个数字。人…

从24GHz到71GHz:Sivers半导体的广泛频率范围5G毫米波产品解析

在5G技术的浪潮中&#xff0c;Sivers半导体推出了创新的毫米波无线产品&#xff0c;为通信行业带来高效、可靠的解决方案。这些产品支持从24GHz到71GHz的频率&#xff0c;覆盖许可与非许可频段&#xff0c;适应高速、低延迟的通信场景。 5G通信频段的一点事儿及Sivers毫米波射频…

LocalDateTime序列化总结

版权说明&#xff1a; 本文由CSDN博主keep丶原创&#xff0c;转载请保留此块内容在文首。 原文地址&#xff1a; https://blog.csdn.net/qq_38688267/article/details/146703276 文章目录 1.背景2.序列化介绍常见场景关键问题 3.总体方案4.各场景实现方式WEB接口EasyExcelMybat…

分享一个Pyside6实现web数据展示界面的效果图

今天又是有问题直接找DS的一天&#xff0c;每日一问&#xff0c;今天我的问题是“怎么将pyside6生成的界面转成web界面&#xff0c;使用python语言实现web界面”&#xff0c;等了一会&#xff0c;DS给我提供了两种方案&#xff0c;方案如下&#xff1a; 然后&#xff0c;让我们…

GAMMA数据处理(十)

今天向别人请教了一个问题&#xff0c;刚无意中搜索到了一模一样的问题 不知道这个怎么解决... ok 解决了 有一个GAMMA的命令可转换 但是很奇怪 完全对不上 转换出来的行列号 不知道为啥 再试试 是因为经纬度坐标的小数点位数 de as

[从零开始学习JAVA ] 深入多线程

前言&#xff1a; 当今软件开发领域中&#xff0c;多线程编程已成为一项至关重要的技能。然而&#xff0c;要编写出高效、可靠的多线程程序并不容易。多线程编程面临着许多挑战&#xff0c;如线程安全性、资源共享、死锁等问题。因此&#xff0c;对于初学者来说&#xff0c;深入…

【Python NetworkX】图结构 图绘制

【Python NetworkX】图结构 & 图绘制 1. 简介 & 安装1.1 简介1.2 安装1.3 导入 2. 图2.1 无向图2.2 有向图2.3 重边无向图2.4 重边有向图2.5 图属性 3. 节点3.1 添加节点3.2 移除节点3.3 节点属性3.4 检查节点状态 4. 边4.1 添加边4.2 移除边4.3 边属性4.4 检查边状态 …

Kubernetes》k8s》Containerd 、ctr 、cri、crictl

containerd ctr crictl ctr 是 containerd 的一个客户端工具。 crictl 是 CRI 兼容的容器运行时命令行接口&#xff0c;可以使用它来检查和调试 k8s 节点上的容器运行时和应用程序。 ctr -v 输出的是 containerd 的版本&#xff0c; crictl -v 输出的是当前 k8s 的版本&#x…