数据结构与算法——顺序表期末复习五大经典题型

目录

 一:顺序表-移除元素

二:顺序表-删除有序数组中的重复项

三:顺序表-合并两个有序数组

四:顺序表-旋转数组

五:顺序表-数组形式的整数加法


 一:顺序表-移除元素

题型链接:27. 移除元素 - 力扣(LeetCode)

题目要求:原地移除数组中所有的元素val,要求时间复杂度为O(N),空间复杂度为O(1)

以 【 nums = [0,1,2,2,3,0,4,2], val = 2 】为例:

 

解答步骤: 

int removeElement(int* nums, int numsSize, int val) {int i=0,j=0;for(i=0,j=0;j<numsSize;){if(nums[j]==val){j++;}   else{nums[i++] = nums[j++];}}return i;
}

二:顺序表-删除有序数组中的重复项

题型链接:26. 删除有序数组中的重复项 - 力扣(LeetCode)

题目要求:删除排序数组中的重复项

以【 nums = [0,0,1,1,1,2,2,3,3,4]  】为例:

解答步骤:

int removeDuplicates(int* nums, int numsSize) {int i=0,j=0;for(i=0,j=0;j<numsSize;){if(nums[i]==nums[j]){j++;}else{nums[++i] = nums[j++];}}return i+1;
}

三:顺序表-合并两个有序数组

题型链接:88. 合并两个有序数组 - 力扣(LeetCode)

题目要求:合并两个有序数组

解题思路:从后往前大小比较法

以【 nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3 】为例:

解答步骤:

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

四:顺序表-旋转数组

题型链接:189. 轮转数组 - 力扣(LeetCode)

题目要求:将数组旋转

解题思路:三段逆置法

向右轮转k个位置:

  1. 先将整个数组进行逆置。
  2. 再将【0,k-1】范围内的数组逆置
  3. 最后【k,numsSize-1】范围内的数组逆置

解答步骤:

//逆序
void Reverse(int* a,int left,int right)
{while(left<right){int tmp = a[left];a[left]= a[right];a[right] = tmp;++left;--right;}}void rotate(int* nums, int numsSize, int k) {k %= numsSize;Reverse(nums,0,numsSize-1);Reverse(nums,0,k-1);Reverse(nums,k,numsSize-1);
}

五:顺序表-数组形式的整数加法

题型链接:989. 数组形式的整数加法 - 力扣(LeetCode)

题目要求:数组形式的整数加法

解题思路:

  1. 先得到的所求的逆序数组
  2. 再将其逆置转换过来

解答步骤:

int* addToArrayForm(int* num, int numSize, int k, int* returnSize) {int* tmp = (int*)malloc(sizeof(int) * fmax(10, numSize + 1));*returnSize = 0;for(int i = numSize-1; i>=0; i--){int sum = num[i] + k % 10;k /= 10;if(sum>=10){k++;sum -= 10;}tmp[(*returnSize)++] = sum;}for(; k>0; k/=10){tmp[(*returnSize)++] = k%10;}for(int i=0; i<(*returnSize)/2; i++){int ret = tmp[i];tmp[i] = tmp[(*returnSize)-1-i];tmp[(*returnSize)-1-i] = ret;}return tmp;
}

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

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

相关文章

npm切换为淘宝镜像源

要切换 npm 的镜像源&#xff0c;您可以使用以下几种方法&#xff1a; 前言 然而&#xff0c;由于众所周知的网络环境问题&#xff0c;直接使用npm官方源下载依赖包时&#xff0c;常常会遇到速度慢甚至下载失败的情况。因此&#xff0c;使用更稳定、更快速的国内镜像源就显得尤…

【Python】探索Magenta:音乐与艺术的机器智能创作

下班了&#xff0c;今天的苦就先吃到这里。 在人工智能的浪潮中&#xff0c;机器学习技术正逐渐渗透到艺术创作的各个领域。今天&#xff0c;我们来探索一个特别的项目——Magenta&#xff0c;它是由Google Brain团队发起的&#xff0c;旨在使用机器智能生成音乐和艺术。这个项…

实战讲稿:Spring Boot整合MyBatis

文章目录 实战讲稿&#xff1a;Spring Boot整合MyBatis课程目标课程内容1. 创建员工映射器接口1.1 创建子包1.2 创建接口 2. 测试员工映射器接口2.1 自动装配员工映射器2.2 测试按标识符查询员工方法2.3 测试查询全部员工方法2.4 测试插入员工方法2.5 测试更新员工方法2.6 测试…

WAAP解决方案:守护数字时代的安全盾牌

在当今这个数字化、数据驱动的时代&#xff0c;网络安全已成为企业运营中不可或缺的一环。随着Web应用程序和API接口在业务中的广泛应用&#xff0c;其面临的安全威胁也日益复杂多变。为此&#xff0c;WAAP&#xff08;Web Application and API Protection&#xff09;解决方案…

上市公司-客户ESG数据集(dta+xlsx+参考文献)(2009-2023年)

参考《经济问题》中李普玲&#xff08;2024&#xff09;的做法&#xff0c;将供应商与主要客户数据对应起来&#xff0c;并对上市公司及关联上市公司的ESG数据进行匹配&#xff0c;形成“供应商——客户ESG”的数据集&#xff0c;保留客户的销售占比 一、数据介绍 数据名称&am…

ROS和ROS2借助智能大模型的学习和研究方法

机器人相关知识的本身和价值-CSDN博客 知识本身在智能时代毫无价值&#xff0c;需要基于知识应用和创新才有价值。 学历报废并非来自扩招&#xff0c;而是智能模型的快速发展。-CSDN blink-领先的开发者技术社区 2024年中秋&#xff0c;智能模型实力已经如此&#xff0c;但还…

十七,Spring Boot 整合 MyBatis 的详细步骤(两种方式)

十七&#xff0c;Spring Boot 整合 MyBatis 的详细步骤(两种方式) 文章目录 十七&#xff0c;Spring Boot 整合 MyBatis 的详细步骤(两种方式)1. Spring Boot 配置 MyBatis 的详细步骤2. 最后&#xff1a; MyBatis 的官方文档&#xff1a;https://mybatis.p2hp.com/ 关于 MyBa…

宝兰德MCP系列介绍 ①:中间件管理能力全线升级,驱动企业数字化管理效能提升

在企业数字化转型加速与新技术涌现下&#xff0c;中间件作为衔接底层基础设施和上层业务应用的桥梁&#xff0c;应用愈发广泛且关键。但为了有效管理并维护众多类型的中间件&#xff0c;企业需更多专业运维与资源&#xff0c;这大大分散业务焦点并提升成本。因此&#xff0c;优…

Linux进程间通信——探索共享内存—— 剖析原理, 学习接口应用

前言&#xff1a;本节内容主要讲解进程间通信的&#xff0c; systemV版本下的共享内存。 共享内存&#xff0c;顾名思义&#xff0c; 其实就是一块内存&#xff0c; 它不同于管道是一个文件。 所以它的传输速度是很快的。 因为管道是文件&#xff0c;有缓冲区&#xff0c; 而共…

HDMI色块移动——FPGA学习笔记13

一、方块移动原理 二、实验任务 使用FPGA开发板上的HDMI接口在显示器上显示一个不停移动的方块&#xff0c;要求方块移动到边界处时能够改变移动方向。显示分辨率为800*480&#xff0c;刷新速率为90hz。&#xff08;480p分辨率为800*480&#xff0c;像素时钟频率Vga_clk 800x4…

Django后台管理复杂模型

【图书介绍】《Django 5企业级Web应用开发实战&#xff08;视频教学版&#xff09;》_django 5企业级web应用开发实战(视频教学版)-CSDN博客 《Django 5企业级Web应用开发实战&#xff08;视频教学版&#xff09;》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com) Django框架…

libyuv之linux编译

文章目录 一、下载源码二、编译源码三、注意事项1、银河麒麟系统&#xff08;aarch64&#xff09;&#xff08;1&#xff09;解决 armv8-adotprodi8mm 指令集支持问题&#xff08;2&#xff09;解决 armv9-asve2 指令集支持问题 一、下载源码 到GitHub网站下载https://github.…

荣誉 | 分贝通入选2024「Cloud 100 China」

近日,2024 Cloud 100 China 榜单于美高梅酒店正式发布,这是靖亚资本和崔牛会联合推出的第三届榜单。 全球商旅管理、企业支出全流程管控、数据BI全方位降本、AI赋能高效出行体验.......近年来,分贝通不断精进产品能力及BI&AI能力,再次上榜。 本届评选,组委会基于过去一年融…

从HarmonyOS升级到HarmonyOS NEXT-环信SDK数据迁移

前言&#xff1a;2024年6月21日 HarmonyOS NEXT &#xff08;后续称之为 NEXT&#xff09; 正式发布&#xff0c;随着 NEXT 稳定版的逐渐临近&#xff0c;各个应用及SDK正在忙于适配 NEXT 系统&#xff0c;同样也面临着系统升级时如何对数据的迁移适配。本文通过使用环信 SDK 介…

Unity 高亮插件HighlightPlus介绍

仅对官方文档进行了翻译 注意:官方文档本身就落后实际,但对入门仍很有帮助,核心并没有较大改变,有的功能有差异,以实际为准.(目前我已校正了大部分差异,后续我会继续维护该文档) 为什么为该插件做翻译?功能强大,使用简单,且还在维护. 基于此版本的内置渲染管线文档 快速开始…

深度剖析去中心化存储:IPFS、Arweave 和 BNB Greenfield 的技术革新与生态系统演进

引言&#xff1a; 在数字时代的浪潮中&#xff0c;数据已然成为驱动创新和决策的核心资产。然而&#xff0c;随着数据量呈指数级增长&#xff0c;传统中心化存储模式面临着前所未有的挑战。安全漏洞、隐私泄露、数据垄断等问题日益凸显&#xff0c;促使技术界重新思考数据存储…

Html css样式总结

1.Html css样式总结 1.1. 定位position 布局是html中非常重要的一部分&#xff0c;而定位在页面布局中也是使用频率很高的方法&#xff0c;本章节为定位在布局中的使用技巧和注意事项。   position定位有4个属性&#xff0c;分别是static(默认&#xff09;&#xff0c;absol…

【C盘清理】Pycharm远程调试重度使用者C盘清理

文章目录 1 remote source 1 remote source 找到本地的这个路径C:\Users\verse\AppData\Local\JetBrains\PyCharm2022.3\remote_sources 这个文件夹是 PyCharm 在进行远程调试时使用的&#xff0c;它包含了远程服务器上的源代码副本。当你在 PyCharm 中设置远程调试并启动调试会…

[yotroy.cool] MGT 388 - Finance for Engineers - notes 笔记

个人博客https://www.yotroy.cool/,感谢关注~ 图片资源可能显示不全,请前往博客查看哦! ============================================================ Lecture 1 What is Accounting? The process of identifying, measuring and communicating economic informati…

docker容器中的内存占用高的问题分析

文章目录 问题描述原因分析分析1分析2验证猜想 结论和经验 问题描述 运维新增对某服务的监控后发现&#xff1a;内存不断上涨的现象。进一步确认&#xff0c;是因为有多个导出日志操作导致的内存上涨问题。 进一步的测试得出的结果是&#xff1a;容器刚启动是占用内存约为50M…