顺序表算法题

news2024/11/25 9:36:39

在学习了顺序表专题后,了解的顺序表的结构以及相关概念后就可以来试着完成一些顺序表的算法题了,在本篇中将对三道顺序表相关的算法题进行讲解,希望能对你有所帮助,一起加油吧!!!


 1.移除元素

27. 移除元素 - 力扣(LeetCode)

在本题中通过以上题目说明,题目要求我们实现的代码是能将数组中的值为val的值都删除 

例如以下数组

在删除都为2的元素后数组就要变为以下形式,而除了留下的元素其他的元素值变为什么我们不关心

因此要解决这道题就要像以下定义两个变量str和tmp一开始都为数组下标0,之后通过str遍历数组,如果str的数组下标位置的值不为val,将数组下标str的值赋值给数组下标tmp的位置并且tmp和str都加一,如果str的数组下标位置的值为val就只str加一

例如以下就是一个数组使用以上方法删除值为2元素的开始和最终的图示 

//在这题目给的函数内,函数的参数nums为指向数组的整型指针,nunsSize为数组的元素个数
//val为要删除的元素的值
int removeElement(int* nums, int numsSize, int val) 

解题代码 :

int removeElement(int* nums, int numsSize, int val) 
{
    int str,tmp;
    str=tmp=0;
    while(str<numsSize)
    {
        if(nums[str]!=val)
        {
            nums[tmp]=nums[str];
            tmp++;
        }
        str++;
    }
    return tmp;
}

 

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

26. 删除有序数组中的重复项 - 力扣(LeetCode)

在看完以下题目的描述后就可以知道题目要我们实现的代码功能是将数组中的重复元素删除 

例如以下数组示例

数组在删除重复元素就变为以下形式

 因此要解决这道题就要像以下定义两个变量dest一开始为数组下标0src一开始为数组下标1若数组dest下标位置的值不等于数组下标src位置的值就先将dest加一,之后将下标src位置的值赋值给下标为dest位置的值,之后再将src加一;若数组dest下标位置的值等于数组下标src位置的值就只将src加一

例如以下就是一个数组使用以上方法删除重复元素的开始和最终的图示

//在这题目给的函数内,函数的参数nums为指向数组的整型指针,nunsSize为数组的元素个数
int removeDuplicates(int* nums, int numsSize) 

解题代码 : 

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

3.合并两个有序数组 

88. 合并两个有序数组 - 力扣(LeetCode)

在通过以上题目描述后就可以了解到题目要求我们是将两个有效数组合并,并且要将两个合并后的数组保存到第一个数组中,保存到数组的数据是递增的。第一个数组的元素个数一开始就为合并后的总个数

例如以下数组示例

要实现这题中两个有效数组的合并就先定义变量l1为第一个数组的有效元素的最后一个下标,定义变量l2为第二个数组的末尾,定义变量l3为第一个数组的末尾,之后比较l1和l2位置的值将这两个当中大的值插入到l3的位置当中,之后l3减-1并且l1-1或者l2-1。最终在l1或者l2小于0时就停止以上的操作,这时如果是l1先为0就说明第二个数组还有元素未进入到第一个数组当中,这时就要循环将元素导入第一个数组当中

例如以下示例 

最终合并完两个数组后变为以下形式 

//在这题目给的函数内,函数的参数nums1为指向第一个数组的整型指针,m为第一个数组有效元素个数
//数nums2为指向第二个数组的整型指针,n为第二个数组有效元素个数
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n)

完整代码: 

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--];
    }
}

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

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

相关文章

Lago - 使用 ClickHouse 扩展事件引擎

本文字数&#xff1a;4540&#xff1b;估计阅读时间&#xff1a;12 分钟 作者&#xff1a;Mathew Pregasen 本文在公众号【ClickHouseInc】首发 本周&#xff0c;我们欢迎来自 Lago 的一篇博客文章&#xff0c;介绍了他们如何使用 ClickHouse 扩展一个事件引擎&#xff0c;并在…

【JavaEE精炼宝库】 网络编程套接字——初识网络编程 | UDP数据报套接字编程

文章目录 一、网络编程基础1.1 网络编程的意义&#xff1a;1.2 网络编程的概念&#xff1a;1.3 网络编程的术语解释&#xff1a;1.4 常见的客户端服务端模型&#xff1a; 二、Socket 套接字2.1 Socket 套接字的概念&#xff1a;2.2 Socket 套接字的分类&#xff1a; 三、UDP数据…

24暑假算法刷题 | Day21 | LeetCode 669. 修剪二叉搜索树,108. 将有序数组转换为二叉搜索树,538. 把二叉搜索树转换为累加树

目录 669. 修剪二叉搜索树题目描述题解 108. 将有序数组转换为二叉搜索树题目描述题解 538. 把二叉搜索树转换为累加树题目描述题解 669. 修剪二叉搜索树 点此跳转题目链接 题目描述 给你二叉搜索树的根节点 root &#xff0c;同时给定最小边界low 和最大边界 high。通过修剪…

Mac应用快速启动器:Alfred 5 for Mac 激活版

Alfred 5 是一款专为 macOS 系统设计的效率提升工具。这款软件以其快速启动和高效操作功能著称&#xff0c;通过使用快捷键来呼出输入界面&#xff0c;用户可以快速完成各种任务。 最新版本 Alfred 5.5 引入了一些新功能。其中包括整合了 ChatGPT 和 DALL-E&#xff0c;这意味…

Map的常见API

Map的常见API Map是双列集合的顶层接口&#xff0c;它的功能是全部双列集合都可以继承使用的 Map的遍历方式 map的遍历方式(键找值) package demo3;import java.util.HashMap; import java.util.Map; import java.util.Set;public class a1 {public static void main(String…

如何优化网站以提升UX设计质量

什么叫 UX 设计&#xff1f;UX 设计&#xff0c;即用户体验设计&#xff0c;是指为提升用户体验而进行的产品设计。 UX 在设计中&#xff0c;设计师通过调查和研究用户来掌握用户的需求和喜好&#xff0c;并利用这些信息来设计产品。设计师还会测试产品&#xff0c;以确保它们能…

xftp 如何链接 ubutn

一 如果你的ubutun 没有安装 openssh-server&#xff0c;那么是链接不上的&#xff0c;因此要先在ubutun 上一定要先安装openssh-server sudo apt install openssh-server 二 查看 ubutun 的ip 三 配置 xftp

导入vue3-引入富文本框编辑器-@wangeditor/editor库

效果图 下载依赖包 pureadmin/utils": "2.4.7 wangeditor/editor": "^5.1.23 wangeditor/editor-for-vue": "5.1.12定义公共组件 在src目录下定义 components/ReEditor/index.vue index.ts import editor from "./src/Editor.vue"…

BFS实现迷宫最短路径

结合队列的知识利用 广度优先遍历&#xff0c;通过对能走的路径的记录以及对走过路径的标记&#xff0c;进行多条路搜查 一、理论基础 如下图的迷宫&#xff1a; 选取所走方向&#xff08;针对某一个位置&#xff09;下&#xff0c;右&#xff0c;上&#xff0c;左&#xff0…

客户在哪儿AI——做真正管用的大客户获客方案

我们的目标是要打造一个真正“管用”的ToB大客户获客方案。以下是两个100%真实的案例&#xff0c;所有数据均为真实经营数据。一个是证明客户在哪儿AI对市场工作的颠覆性提升&#xff0c;另一个是证明客户在哪儿AI对决策层和销售工作的颠覆性提升。 客户在哪儿AI生产的是企业全…

C++模板——泛型编程

目录 1. 什么是泛型编程 2. 函数模板 2.1 定义格式 2.2 实例化及原理 2.3 参数匹配原则 3. 类模板 3.1 定义格式 3.2 实例化 4. 非类型模板参数 5. 模板的特化 5.1 概念 5.2 函数模板和类模板特化 6. 模板的分离编译 1. 什么是泛型编程 如何实现一个通用的加…

Windows下Pytorch入门深度学习环境安装与配置(CPU版本)

Windows下Pytorch入门深度学习环境安装与配置&#xff08;CPU版本&#xff09; 一、安装过程中各个软件的作用&#xff08;一&#xff09;Python&#xff08;二&#xff09;库 / 包 / package / library&#xff08;三&#xff09;PyTorch / Tensorflow&#xff08;四&#xff…

详解yolov5和yolov8以及目标检测相关面试

一、与yoloV4相比&#xff0c;yoloV5的改进 输入端&#xff1a;在模型训练阶段&#xff0c;使用了Mosaic数据增强、自适应锚框计算、自适应图片缩放基准网络&#xff1a;使用了FOCUS结构和CSP结构Neck网络&#xff1a;在Backbone和最后的Head输出层之间插入FPN_PAN结构Head输出…

计算机二级题--文件 章节

之前写的有文件全部的知识点&#xff0c;这一篇主要针对计算机二级真题的整理。 需要备考计算机二级的小伙伴们先收藏起来吧。整理不易&#xff0c;不过有帮助记得点赞哦 1.相关概念考点&#xff1a; 1.文件指针指向的是文件缓冲区的位置&#xff0c;不是文件在读位置。 2.…

儿童洗衣机哪个牌子好?五大爆款机型倾情分享

在当今繁忙的生活中&#xff0c;儿童洗衣机已成为我们日常生活中不可或缺的家电。但是&#xff0c;面对市场上众多品牌的儿童洗衣机&#xff0c;那么&#xff0c;到底儿童洗衣机哪个牌子好&#xff1f;本次我将在这篇文章中探讨儿童洗衣机的选购策略&#xff0c;以帮助大家找到…

记录unraid docker更新的域名

背景&#xff1a;级联 一、安装内容 unraid更新docker&#xff0c;之前一直失败&#xff0c;修改网络后可以进行安装。 二、查看域名 查看域名&#xff0c;发现是走github的&#xff0c;怪不得有一些docker无法正常更新 三、解决方法 更改代理&#xff0c;这里为unraid的…

智慧教育解决方案

1. 智慧教育解决方案概述 智慧教育解决方案旨在通过教育改革实现四个转变&#xff1a;从以教为主到以学为主&#xff0c;从专业教育到通识与专业教育结合&#xff0c;从课堂教育到课内外结合&#xff0c;以及从结果评价到过程与结果评价结合。 2. 教育三维目标 教育三维目标…

避免工件精度受损:精准调整滚珠丝杆状态!

滚珠丝杆作为一种常用的传动装置&#xff0c;经过长期使用或者维护不当的情况下有时会发生弯曲或变形。弯曲不仅会对滚珠丝杆的精度和寿命造成影响&#xff0c;而且还会对整个机器系统的工作效率和安全性产生影响。那么&#xff0c;应该如何要避免滚珠丝杆弯曲对工件的影响呢&a…

Java数据结构与算法--链表(Linked List)

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;Java SE关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 深入了解链表&#xff1a; 链表是一种常见的数据结构&#xff0c;它由一系列节点…

【SOC 芯片设计 DFT 学习专栏 -- DFT DRC规则检查】

请阅读【嵌入式及芯片开发学必备专栏】 请阅读【芯片设计 DFT 学习系列 】 如有侵权&#xff0c;请联系删除 转自&#xff1a; 芯爵ChipLord 2024年07月10日 12:00 浙江 文章目录 概述DRC的概念Tessent DRC检查的概述时钟相关检查扫描相关检查BIST规则检查预DFT时钟规则检查 …