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

目录

 一:顺序表-移除元素

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

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

四:顺序表-旋转数组

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


 一:顺序表-移除元素

题型链接: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.xdnf.cn/news/143532.html

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

相关文章

你了解什么是场外期权吗?

今天期权懂带你了解你了解什么是场外期权吗&#xff1f;场外期权是指在交易所之外进行交易的期权合约。这类期权通常是由买卖双方通过私人协议进行交易&#xff0c;而不是在标准化的交易所上进行。 场外期权的特点 1.定制化&#xff1a;场外期权合约可以根据交易双方的具体需…

详解RFM模型

详解RFM模型 一、定义二、RFM模型的三个指标1‌、最近一次消费&#xff08;Recency&#xff09;‌2、消费频率&#xff08;Frequency&#xff09;‌3、消费金额&#xff08;Monetary&#xff09;‌ 三、RFM模型的应用和分类1、精细化营销2、提升客户满意度3、风险管理4、产品优…

基于 K8S kubernetes 的常见日志收集方案

目录 1、日志对我们来说到底重不重要&#xff1f; 2、常见的日志收集方案 2.1 EFK 2.2 ELK Stack 2.3 ELKfilebeat 2.4 其他方案 2、elasticsearch组件介绍 3、filebeat组件介绍 3.1 filebeat和beat关系 3.2 filebeat是什么&#xff1f; 3.3 Filebeat工作原理 3.4 …

智慧卫生间系统:引领公共卫生间管理的新时代@卓振思众

随着城市化进程的加快&#xff0c;公共卫生间的使用频率不断增加。如何提升公共卫生间的使用体验、管理效率以及卫生水平&#xff0c;已成为各地政府和管理者关注的焦点。智慧卫生间系统应运而生&#xff0c;成为解决这一问题的重要工具。它结合了物联网技术和智能管理理念&…

CTF 技能树 LOG -GIT泄露 笔记

log 使用虚拟机kali操作 python2 安装 apt-get install python2 进入root用户&#xff0c;下载克隆git hack库 git clone https://github.com/BugScanTeam/GitHack sudo passwd root 修改root 命名密码为root 切换登录 su root 终端进入home/kali/GitHack/ python GitH…

为您的任意模型赋能——RAG

随着大语言模型的参数规模越来越大&#xff0c;微调模型的代价越来越大&#xff0c;于是知识检索增强的方式成为越来越主流的选择。通过提前准备好的知识库&#xff0c;在模型进行推理之前进行知识检索作为上下文一同交给大模型进行推理&#xff0c;从而提升大模型对领域知识的…

编写第一个hadoop3.3.6的mapreduce程序

hadoop还是用的上个伪分布环境。 hadoop安装在龙蜥anolis8.9上&#xff0c;开发是在windows下。 1、windows下首先要下载hadoop的包&#xff0c;hadoop-3.3.6.tar.gz&#xff0c;比如我的解压到d:\java\hadoop-3.3.6中。 配置环境&#xff1a;HADOOP_HOME&#xff0c;内容为&am…

《互联网域名产业报告(2024年)》

域名是互联网的关键基础资源&#xff0c;是数字时代的重要网络入口和人机交互标识。域名系统是互联网的关键基础设施和“中枢神经系统”&#xff0c;攸关互联网安全稳定运行&#xff0c;也是支撑各国经济社会运行和推动数字经济发展的重要基础。域名解析是用户访问互联网过程中…

[附源码]超简洁个人博客网站搭建+SpringBoot+Vue前后端分离

今天带来一款优秀的项目&#xff1a;个人博客系统源码 。 系统采用的流行的前后端分离结构&#xff0c;内含功能包括 "写博客文章"&#xff0c;“修改博客文章”&#xff0c;“富文本编辑器”&#xff0c;“评论管理”“管理员角色”&#xff0c;“游客角色”&#x…

简单题27 - 移除元素(Java)20240917

问题描述&#xff1a; 代码&#xff1a; class Solution {public int removeElement(int[] nums, int val) {int k 0; // k指针用于记录不等于val的元素放置位置for (int i 0; i < nums.length; i) {if (nums[i] ! val) {nums[k] nums[i]; // 如果元素不等于val&#…

C#和数据库高级:继承与多态

文章目录 一、继承的基本使用继承的概念&#xff1a;继承的特点&#xff1a;为什么使用继承&#xff1f; 二、继承的关键字1、this关键字2、base关键字3、Protected关键字4、子类调用父类的构造函数的总结&#xff1a; 三、继承的特性继承的传递性&#xff1a;继承的单根性&…

12 vue3之异步组件代码分包内置组件suspense和teleport

异步组件 在大型应用中&#xff0c;我们可能需要将应用分割成小一些的代码块 并且减少主包的体积&#xff08;不需要在首屏加载得都可使用异步组件&#xff09; 这时候就可以使用异步组件 顶层 await 在setup语法糖里面 使用方法 <script setup> 中可以使用顶层 awa…

IA4054 独立直线锂离子电池充电器,带热调节功能芯片IC

一般描述 LA4054 是一款适用于单体锂离子电池的完整恒流/恒压线性充电器。其ThinSOT封装和较低的外部元件数量使IA4054非常适合便携式应用。此外&#xff0c;LA4054专门设计用于在USB电源规格内工作。 由于内部MOSFET架构&#xff0c;不需要外部感测电阻器&…

Spring6梳理9—— 依赖注入之注入对象类型属性

9.1 依赖注入之外部注入对象类型属性 9.1.1 创建dept与emp类 1.dept类 package com.atguigu.spring6.iocxml.ditest;//部门类 public class Dept {private String dname;public String getDname() {return dname;}public void setDname(String dname) {this.dname dname;…

鸿蒙NEXT生态应用核心技术理念:统一生态,原生智能

统一生态 移动操作系统和桌面操作系统的跨平台应用开发框架不尽相同&#xff0c;从渲染方式的角度可以归纳为 WebView 渲染、原生渲染和自渲染这三类&#xff0c;鸿蒙系统对应的提供系统 WebView、ArkUI 框架和XComponent 能力来支撑三种类型的跨平台框架的接入主流跨平台开发…

Java项目实战II基于Java+Spring Boot+MySQL的保密信息学科平台系统(源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、论文参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 随着高等教…

Ruffle 继续在开源软件中支持 Adobe Flash Player

大多数人已经无需考虑对早已寿终正寝的 Adobe Flash 的支持&#xff0c;但对于那些仍有一些 Adobe Flash/SWF 格式的旧资产&#xff0c;或想重温一些基于 Flash 的旧游戏/娱乐项目的人来说&#xff0c;开源 Ruffle 项目仍是 2024 年及以后处理 Flash 的主要竞争者之一。 Ruffl…

免费好用的ppt素材库有哪些?这2个在线网站值得推荐!

ppt素材去哪找&#xff1f; 对于很多做PPT的人来说&#xff0c;做PPT的过程中&#xff0c;不是在找素材&#xff0c;就是在去找ppt素材的路上&#xff0c;想寻找到与内容相匹配的ppt素材&#xff0c;往往占用了大量的时间&#xff0c;且ppt和ppt素材库本身是分离的&#xff0c…

Qt 学习第十天:小项目:QListWidget的使用

一、页面布局 二、命名按钮 双击按钮可以修改显示中的文字&#xff08;例如&#xff1a;改成“全选”&#xff09;&#xff0c;objectName是要改成程序员所熟悉的名字&#xff08;英文&#xff0c;符合代码规范&#xff09;方便修改和书写代码&#xff0c;一看就能看懂的 三、…

直接从U盘里删除文件能找回吗?不慌!教你4种恢复技巧

在数字化时代&#xff0c;U盘已成为我们日常生活和工作中不可或缺的数据存储工具。然而&#xff0c;随着使用频率的增加&#xff0c;误删文件的情况也时有发生。当文件从U盘中被直接删除时&#xff0c;许多人可能会感到绝望&#xff0c;认为这些文件已经永久丢失。 但实际上&am…