前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >程序员算法面试中,必须掌握的数组理论知识

程序员算法面试中,必须掌握的数组理论知识

作者头像
代码随想录
发布2020-06-12 17:20:08
3470
发布2020-06-12 17:20:08
举报
文章被收录于专栏:代码随想录代码随想录

数组是非常基础的数据结构,在面试中,考察数组的题目一般在思维上都不难,主要是考察对代码的掌控能力

也就是说,想法很简单,但实现起来 可能就不是那么回事了

首先要知道数组在内存中的存储方式,这样才能真正理解数组相关的面试题

数组是存放在连续内存空间上的相同类型数据的集合。

数组可以方便的通过下表索引的方式获取到下表下对应的数据。

举一个字符数组的例子,如图所示:

需要两点注意的是

  • 数组下表都是从0开始的。
  • 数组内存空间的地址是连续的

正是因为数组的在内存空间的地址是连续的,所以我们在删除或者增添元素的时候,就难免要移动其他元素的地址

例如删除下表为3的元素,需要对下表为3的元素后面的所有元素都要做移动操作,

如图所示:

时间复杂度为O(n),所以数组不适合做频繁的增删操作 ,这一点在以后解题选择容器的时候中也是非常重要的。

至于二维数组,直接上图,大家应该就知道怎么回事了,图中a[][]表示的就是二维数组

二维数组其实就是一个矩阵

那么二维数组在内存的空间地址是连续的么?

我们来举一个例子,例如: int[][] rating = new int[3][4]; , 这个二维数据在内存空间可不是一个 3*4 的连续地址空间

如图所示:

二位数组中其实是一个线性数组存放着 其他数组的首地址。

所以二维数据在内存中不是 3*4 的连续地址空间,而是四条连续的地址空间组成!

很多同学会以为二维数组在内存中是一片连续的地址,其实并不是。

这里面试中数组相关的理论知识就介绍完了。

后续我将介绍面试中数组相关的五道经典面试题目,敬请期待!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 代码随想录 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档