【顺序表】算法题 --- 力扣

一、移除元素

移除元素

这个题让我们移除数组nums中值为val的元素,最后返回k(不是val的元素个数)

        这样显然我们就不能再创建一个数组来解决这个问题了,只能另辟蹊径

思路:双指针

        这里定义两个指针(l1,l2)(l1,l2是整数,通过下标访问数组元素)都指向数组的起始位置,然后循环判断l1指向的元素是否等于val?如果等于,就让l2++;如果不等于,那就将l2的值赋给l1指向的元素,然后l1++,l2++。

        这样遍历完数组后,l1的值就是不等于val的元素的个数。

        这里以题目中给的案例来分析以下:

nums[l2]等于val(3),l2++;

nums[l2]不等于val(3),nums[l1++]=num[l2++];

nums[l2]不等于val(3),nums[l1++]=num[l2++];

nums[l2]等于val(3),l2++;

跳出循环,次数l1的值就是数据个数k

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

二、删除有序数组的重复项

删除有序数组的重复项

        这个题让我们删除非严格递增排列的数组中的重复数字个数,最后返回元素个数k

思路:双指针

        定义l1,l2两个指针(与上面一样,l1,l2都是整数,通过下标访问数组元素),这里l1从0开始,l2从1开始

判断nums[l1]是否等于nums[l2]?如果等于,l2++;

如果不等于,l1++后再nums[l1]=num[l2];最后l2++;

循环结束后,l1++就是元素个数k

        用题目给的示例来分析一下:

nums[l1]等于nums[l2],l2++;

nums[l1]等于nums[l2],nums[++l1]=nums[l2++];

跳出循环,此时l1=1,l1++就是不同的元素个数。

int removeDuplicates(int* nums, int numsSize) 
{int l1 = 0, l2 = 1; while(l2<numsSize){if(nums[l1]!=nums[l2]){l1++;nums[l1]=nums[l2];l2++;}else{l2++;}}return ++l1;
}

三、合并两个有序数组

合并两个有序数组

题目要求合并两个有序数组,合并后是非递减序列,最后返回nums1数组的地址。

思路:三指针

        定义三个指针(l1,l2,l3)l1指向nums1数组的最后一个有效数字,l2指向nums2数组的最后一个有效数字,l3指向nums1数组的最后一个位置。与前面的一样这三个指针也是整数,通过下标访问数组元素。

        循环中,如果nums1[l1]>nums2[l2]就让l1指向的数据存放到l3处,并l1--,l3--;

        如果nums1[l1]<=nums2[l2],就让l2指向的数据存放到l3处,并l2-- ,l3--;

        还是以题目所给的示例来分析:

nums1[l1]<nums2[l2],执行

nums1[l3]=nums2[l2];l2--;l3--;

nums1[l1]<nums2[l2],执行

nums1[l3]=nums2[l2];l2--;l3--;

现在,nums1[l1]>nums2[l2],执行

nums1[l3]=nums1[l1];l1--;l1--;

nums1[l1]等于nums2[l2],执行

nums1[l3]=nums2[l2];l2--;l3--;

现在,l2已经小于0了,循环结束,这时,nums1数组就是合并好的数组

        这里注意,如果l1先小于0,我们就需要吧nums2中剩余的数据赋给数组nums2

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {int l1=m-1,l2=n-1,l3=m+n-1;while(l1>=0&&l2>=0){if(nums1[l1]>nums2[l2]){nums1[l3]=nums1[l1];l1--;l3--;}else{nums1[l3]=nums2[l2];l2--;l3--;}}if(m==0){nums1[l3]=nums2[l2];}if(l2>=0){while(l2>=0){nums1[l3]=nums2[l2];l2--;l3--;}}
}

如果本篇内容对你有帮助,可以一键三连支持一下!!!

        如有错误的地方,也请各位大佬们指出纠正

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

解决Ubuntu 20.04下外接显示屏无信号问题【多次尝试无坑完整版!!!】

解决Ubuntu 20.04下外接显示屏无信号问题【多次尝试无坑完整版&#xff01;&#xff01;&#xff01;】 一、引言 作为一名开发者&#xff0c;我经常在Windows和Ubuntu之间切换&#xff0c;以满足不同的开发需求。最近&#xff0c;我在使用惠普暗影精灵9&#xff08;搭载RTX 4…

算法力扣刷题记录 四十九【112. 路径总和】和【113. 路径总和ii】

前言 二叉树篇继续。 记录 四十九【112. 路径总和】和【113. 路径总和ii】 一、【112. 路径总和】题目阅读 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 target…

框架设计MVC

重点&#xff1a; 1.用户通过界面操作&#xff0c;传输到control&#xff0c;control可以直接去处理View&#xff0c;或者通过模型处理业务逻辑&#xff0c;然后将数据传输给view。 2.control包含了model和view成员。 链接&#xff1a; MVC框架详解_mvc架构-CSDN博客 MVC架…

vue 给特定满足条件的表单数据添加背景颜色,组件的 row-class-name

1、:row-class-name"tableRowClassName" 可为表格每行根据后面的函数绑定class名 <!-- 列表框 --><div class"tableList"><el-table :data"teamModelListTable" style"width: 100%"selection-change"handleSele…

【Sklearn-驯化】一文搞懂sklearn中特征平滑之-贝叶斯平滑策略使用技巧

【Sklearn-驯化】一文搞懂sklearn中特征平滑之-贝叶斯平滑策略使用技巧 本次修炼方法请往下查看 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合&#xff0c;智慧小天地&#xff01; &#x1f387; 免费获取相关内容…

C++ std::lock_guard和 std::unique_lock

二者都是 C 标准库中用于管理互斥锁&#xff08;mutex&#xff09;的 RAII&#xff08;Resource Acquisition Is Initialization&#xff09;机制的类。这些类可以确保互斥锁在构造时被获取&#xff0c;在析构时被释放&#xff0c;从而避免死锁和资源泄漏问题。不过&#xff0c…

在SpringCloud中如何轻松实现微服务间的通信

在Spring Cloud中&#xff0c;实现微服务间的通信非常简单。Spring Cloud提供了多种方式来进行微服务之间的通信&#xff0c;包括使用RestTemplate、Feign、Ribbon、Eureka等组件。下面我将详细介绍这些方式的使用方法。 使用RestTemplate进行通信&#xff1a; RestTemplate是S…

MongoDB常用命令大全,概述、备份恢复

文章目录 一、MongoDB简介二、服务启动停止、连接三、数据库相关四、集合操作五、文档操作六、数据备份与恢复/导入导出数据6.1 mongodump备份数据库6.2 mongorestore还原数据库6.3 mongoexport导出表 或 表中部分字段6.4 mongoimport导入表 或 表中部分字段 七、其他常用命令八…

[笔记]Fluke3563 振动分析仪

参考文档&#xff1a;Fluke 3563 Analysis Vibration Sensor system | Fluke 1.四大机械故障损伤原因 2.振动特征 福禄克做的示意图很棒&#xff1a; 不平衡对应转动轴的一倍频&#xff0c;不对中是2倍频&#xff0c;然后3~6倍频会有未紧固故障&#xff0c;更高频的位置是齿轮…

全栈 Discord 克隆:Next.js 13、React、Socket.io、Prisma、Tailwind、MySQL笔记(一)

前言 阅读本文你需要有 Next.js 基础 React 基础 Prisma 基础 tailwind 基础 MySql基础 准备工作 打开网站 https://ui.shadcn.com/docs 这不是一个组件库。它是可重用组件的集合&#xff0c;您可以将其复制并粘贴到应用中。 打开installation 选择Next.js 也就是此页面…

JRebelXRebel在线激活(亲测可用)

包含所有新旧版本&#xff0c;包括2023.4.2、2023.4.1、2023.4.0、2023.3.2、2023.3.1、2023.3.0、2023.2.2、2023.2.1、2023.2.0、2023.1.2、2023.1.1 等以及所有2022版本 JRebel&XRebel激活服务器地址 激活服务器地址&#xff08;路线1,推荐&#xff09;&#xff0c;可…

鸿蒙语言基础类库:【@system.geolocation (地理位置)】

地理位置 说明&#xff1a; 从API Version 7 开始&#xff0c;该接口不再维护&#xff0c;推荐使用新接口[ohos.geolocation]。本模块首批接口从API version 3开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import geolocation from …

快慢指针的应用(题目来源力扣oj训练)

快慢指针 快慢指针一般用来找到链表的中间节点&#xff0c;就是直接搞两个指针&#xff0c;快指针的移动是慢指针的两倍&#xff0c;那么为什么快慢指针可以找到中间节点&#xff0c;因为假设一个为n的链表&#xff0c;快指针走完慢指针也就是n/2。 具体案例 找链表的中间节…

如何使用在线工具将手机相册中的图片转换为JPG格式

我们经常在手机相册中保存大量的图片&#xff0c;无论是家庭聚会的照片还是旅行的瞬间&#xff0c;每一幅图像都承载着珍贵的记忆。然而&#xff0c;有时候我们会遇到图片格式不兼容的问题&#xff0c;尤其是在需要将图片分享到特定平台或编辑时。 例如&#xff0c;某些社交平台…

2024年充电宝推荐!哪个牌子充电宝好?充电宝选购大全!

大家在选购充电宝的时候是否有注意要选择一款安全性高的充电宝呢&#xff1f;是选择好看的充电宝还是选择性价比高的呢&#xff1f;充电宝的安全问题不容忽视&#xff0c;其中最令人担忧的便是爆炸风险。那么到底哪些充电宝是比较适合我们日常使用的呢&#xff1f;毕竟现在在当…

计网ip层重要面经总结

文章目录 127.0.0.1, localhost, 0.0.0.0有什么不同?ipv6还需要NAT吗&#xff1f;DNS查询服务器的基本流程浏览器输入一个URL到显示器显示的过程PING是怎么工作的&#xff1f;ipv4和ipv6究竟有哪些区别&#xff1f;什么是跨域&#xff0c;什么情况下会发生跨域问题&#xff1f…

WINUI或WPF灵活使用样式、控件模板、自定义控件、用户控件

在WINUI与WPF 中&#xff0c;控件模板&#xff08;ControlTemplate&#xff09;、样式&#xff08;Style&#xff09;、自定义控件&#xff08;CustomControl&#xff09;和用户控件&#xff08;UserControl&#xff09;都是构建复杂和灵活用户界面的重要工具&#xff0c;但它们…

使用gradio部署微调后的模型

文章目录 概要整体架构流程技术细节小结 概要 使用gradio部署微调后的模型 整体架构流程 gradio前期学习&#xff0c;以下是一些常见的输入输出组件&#xff0c;有些即可输入也可输出 gr.Audio(sources[microphone, upload], # 音频输入sources&#xff0c;支持录制或者上传…

【自撰写】【国际象棋入门】第11课 对局实例分析(一)

第11课 对局实例分析&#xff08;一&#xff09; 本次课中&#xff0c;我们来分析一例真实的对局。对局弈于“国象联盟”APP&#xff0c;日期为2024年6月13日星期四&#xff0c;我执黑。开局伊始&#xff0c;白方的布局略占优势&#xff0c;中局阶段黑方一直保持着微弱的领先&…

共研算法未来 百望云金盾大模型入选“BPAA全球应用算法模型典范”Top50

当大型预训练模型以破竹之势迅速迭代&#xff0c;它们在人工智能领域的核心地位与深远意义何在&#xff1f;在这场由大模型引领的智能革新潮流中&#xff0c;又如何塑造并推动着整个算法产业的未来蓝图&#xff1f; 在2024世界人工智能大会&#xff08;WAIC&#xff09;的第二天…