【数据结构】一些数组面试题以及顺序表的思考

简单不先于复杂,而是在复杂之后。

在这里插入图片描述

文章目录

      • 1. 数组相关面试题
      • 2. 顺序表的问题及思考

1. 数组相关面试题

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

在这里插入图片描述

在这里插入图片描述

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

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

在这里插入图片描述

在这里插入图片描述

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

3.合并两个有序数组。

在这里插入图片描述

在这里插入图片描述

若 nums1 的数先结束比较,那么可以不做任何操作,但是如果 nums2 先结束,就需要把 nums2 中剩余的数拷贝到 nums1 中

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {int end1 = m - 1, end2 = n - 1;int i = m + n - 1;while(end1 >= 0 && end2 >= 0){if(nums1[end1] > nums2[end2]){nums1[i] = nums1[end1];--i;--end1;}else{nums1[i] = nums2[end2];--i;--end2;}}//end2 结束, nums2的数组都拷贝过去了,不用处理//end1 结束, nums1的数组都拷贝过去了,需要再把nums2剩下的数据拷贝过去while(end2 >= 0){nums1[i] = nums2[end2];--i;--end2;}
}

2. 顺序表的问题及思考

问题:

  1. 中间/头部的插入删除,时间复杂度为O(N)
  2. 增容需要申请新空间,拷贝数据,释放旧空间,会有不小的消耗。
  3. 增容一般是呈2倍的增长,势必会有一定的空间浪费。例如当前容量为100,满了以后增容到200,我们再继续插入了5个数据,后面没有数据插入了,那么就浪费了95个数据空间。

思考:该如何解决以上问题?

–end1;
}
else
{
nums1[i] = nums2[end2];
–i;
–end2;
}
}

//end2 结束, nums2的数组都拷贝过去了,不用处理

//end1 结束, nums1的数组都拷贝过去了,需要再把nums2剩下的数据拷贝过去

while(end2 >= 0)
{nums1[i] = nums2[end2];--i;--end2;
}

}


### 2.4 顺序表的问题及思考> 问题:
>
> 1. 中间/头部的插入删除,时间复杂度为O(N)
> 2. 增容需要申请新空间,拷贝数据,释放旧空间,会有不小的消耗。
> 3. 增容一般是呈2倍的增长,势必会有一定的空间浪费。例如当前容量为100,满了以后增容到200,我们再继续插入了5个数据,后面没有数据插入了,那么就浪费了95个数据空间。
>
> 思考:该如何解决以上问题?
>
> ​           **下篇文章我们来使用链表的结构。**

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

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

相关文章

网络安全—部署CA证书服务器

文章目录 网络拓扑安装步骤安装证书系统安装从属证书服务器 申请与颁发申请证书CA颁发证书 使用windows Server 2003环境 网络拓扑 两台服务器在同一网段即可&#xff0c;即能够互相ping通。 安装步骤 安装证书系统 首先我们对计算机名进行确认&#xff0c;安装了证书系统后我…

59.网游逆向分析与插件开发-游戏增加自动化助手接口-文字资源读取类的C++还原

内容来源于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;游戏菜单文字资源读取的逆向分析-CSDN博客 之前的内容&#xff1a;接管游戏的自动药水设定功能-CSDN博客 码云地址&#xff08;master分支&#xff09;&#xff1a;https://gitee.com/dye_your_fing…

c++语言基础18-开房门

题目描述 假设你手里有一串钥匙&#xff0c;这串钥匙上每把钥匙都有一个编号&#xff0c;对应着一个房门的编号。现给你一个房门编号&#xff0c;你需要判断是否能够打开该房门。 输入描述 测试数据共有多组。 第一行为一个整数 s&#xff0c;表示共有多少组测试数据。 每组第一…

Windows 10系统用Xlight FTP搭建SFTP服务器

步骤&#xff1a; 1.安装SFTP服务器 刚开始我使用的是freeSSHd&#xff0c;后面发现由于公司网络原因&#xff0c;打不开这个软件&#xff0c;改成了使用Xlight FTP&#xff0c; 官网下载链接&#xff1a;Xlight FTP 服务器 - 下载免费的windows FTP 服务器 Xlight FTP有30…

tp8/6 插件PhpOffice\PhpSpreadsheet导入表格

一、安装 composer require phpoffice/phpspreadsheet 官网&#xff1a;phpoffice/phpspreadsheet - Packagist 二、代码 <?php namespace app\services\upload\model; use app\services\BaseServices; use \PhpOffice\PhpSpreadsheet\Spreadsheet; use \PhpOffice\Php…

JVM:字节码

JVM&#xff1a;字节码 前言1. JVM概述 前言 1. JVM概述 1. JVM vs JDK vs JRE JVM Java 虚拟机&#xff08;JVM&#xff09;是运行 Java 字节码的虚拟机。JVM 有针对不同系统的特定实现&#xff08;Windows&#xff0c;Linux&#xff0c;macOS&#xff09;&#xff0c;目的是…

实现文本 内容展开 / 收起

<template><el-table :data"tableData" style"width: 100%" height"250"><el-table-columnfixedprop"date"label"日期"width"150"></el-table-column><el-table-columnprop"name…

阿里云PolarDB数据库不同配置租用价格表

阿里云数据库PolarDB租用价格表&#xff0c;云数据库PolarDB MySQL版2核4GB&#xff08;通用&#xff09;、2个节点、60 GB存储空间55元5天&#xff0c;云数据库 PolarDB 分布式版标准版2核16G&#xff08;通用&#xff09;57.6元3天&#xff0c;阿里云百科aliyunbaike.com分享…

【数据湖架构】数据湖101:概述

数据湖是非结构化和结构化数据池&#xff0c;按原样存储&#xff0c;没有特定的目的&#xff0c;可以建立在多种技术上&#xff0c;如Hadoop&#xff0c;NoSQL&#xff0c;Amazon Simple Storage Service&#xff0c;关系数据库或各种组合根据一份名为“什么是数据湖”的白皮书…

微软截图工具SnippingTool_6.1.7601免费版

SnippingTool是一款win7系统自带的一款非常实用型截图工具&#xff0c;操作简单&#xff0c;点击“新建"可一键截图&#xff0c;截图之后会弹出编辑器&#xff0c;可以进行一些简单的勾画编辑操作&#xff0c;您可以使用笔、荧光笔、电子邮件或保存等选项。如果您的系统丢…

界面控件DevExpress Blazor Grid v23.2 - 支持全新的单元格编辑模式

DevExpress Blazor UI组件使用了C#为Blazor Server和Blazor WebAssembly创建高影响力的用户体验&#xff0c;这个UI自建库提供了一套全面的原生Blazor UI组件&#xff08;包括Pivot Grid、调度程序、图表、数据编辑器和报表等&#xff09;。 在这篇文章中&#xff0c;我们将介…

死锁的处理策略“预防死锁”-第三十七天

目录 前言 破坏互斥条件 破坏不剥夺条件 破坏请求和保持条件 静态分配法 破坏循环等待条件 顺序资源分配法 本节思维导图 前言 死锁的产生必须满足四个必要条件&#xff0c;只要其中一个或几个条件不满足&#xff0c;死锁就不会发生 破坏互斥条件 互斥条件&#xff1a;…

Swift并发的结构化编程

并发&#xff08;concurrency&#xff09; 早期的计算机 CPU 都是单核的&#xff0c;操作系统为了达到同时完成多个任务的效果&#xff0c;会将 CPU 的执行时间分片&#xff0c;多个任务在同一个 CPU 核上按时间先后交替执行。由于 CPU 执行速度足够地快&#xff0c;给人的错觉…

【python入门】day17:模块化编程、math库常见函数

什么叫模块 模块的导入 导入所有&#xff1a;import 模块名称 导入指定&#xff1a;from 模块名称 import 函数/变量/类 python的math库 什么是math库 Python的math库是Python的内建库之一&#xff0c;它提供了许多数学函数&#xff0c;包括三角函数、对数函数、幂函数等&a…

Scikit-Learn线性回归(四)

Scikit-Learn线性回归四:梯度下降 1、梯度下降1.1、梯度下降概述1.2、梯度下降及原理1.3、梯度下降的实现2、梯度下降法求解线性回归的最优解2.1、梯度下降法求解的原理2.2、梯度下降法求解线性回归的最优解2.3、梯度下降法求解线性回归案例(波士顿房价预测)3、Scikit-Learn…

我的创作纪念日三年收获和感悟

机缘 我刚开始接触创作也是最近几年开始&#xff0c;当初就是希望自己的收获分享给大家&#xff0c;不仅使自己成长&#xff0c;也可以带着大家一起成长&#xff0c;独乐乐不如众乐乐&#xff0c;人都是自私的以前我都是看到好的知识文章都是自己藏起来&#xff0c;发现收获的…

NSSCTF 简单包含

开启环境: 使用POST传flag&#xff0c;flag目录/var/www/html/flag.php 先使用post来尝试读取该flag.php 没反应: 查看一下源码index.php&#xff0c;看有什么条件 base64解密: <?php$path $_POST["flag"];if (strlen(file_get_contents(php://input)) <…

Qt/C++编写视频监控系统82-自定义音柱显示

一、前言 通过音柱控件实时展示当前播放的声音产生的振幅的大小&#xff0c;得益于音频播放组件内置了音频振幅的计算&#xff0c;可以动态开启和关闭&#xff0c;开启后会对发送过来的要播放的声音数据&#xff0c;进行运算得到当前这个音频数据的振幅&#xff0c;类似于分贝…

SpringSecurity-2.7中跨域问题

SpringSecurity-2.7中跨域问题 访问测试 起因 写这篇的起因是会了解到 SSM(CrosOrigin)解决跨域,但是会在加入SpringSecurity配置后,这个跨域解决方案就失效了,而/login这个请求上是无法添加这个注解或者通过配置(WebMvcConfig)去解决跨域,所以只能使用SpringSecurity提供的.c…

AI原生应用开发“三板斧”亮相WAVE SUMMIT+2023

面对AI应用创新的风口跃跃欲试&#xff0c;满脑子idea&#xff0c;却苦于缺乏技术背景&#xff0c;不得不望而却步&#xff0c;这曾是许多开发者的苦恼&#xff0c;如今正在成为过去。 12月28日&#xff0c;WAVE SUMMIT深度学习开发者大会2023在北京举办。百度AI技术生态总经理…