牛客刷题 --- 一周错题总结(数组类)

在这里插入图片描述
答案:c
解答:数组a比数组b大很多,可能跨更多的页,缺页率高或者缓存命中更低,所以pb快

2.

在这里插入图片描述答案:b
解答:本题A[5,8]以列为主,该元素处于第八列,前七列是满的每列8个元素,该元素处于第五行,他的前一个元素A[4,8]的结束地址就是所求的开始,最后,每个元素占3。所以有公式:(7*8+4)*3

3.

在这里插入图片描述
答案:c
解答:java中数组左边的定义部分是不能出现常数表达式的 所以BD语法错误。 但是这题是c/c++的题目,C中如果不使用指针,左边括号须有常数,否则右边必须有具体数组。所以c语法错误。

4.

在这里插入图片描述
答案:b
解答:数组可以直接通过下标得到存储的值 因此支持随机,访问链表是链式存储结构时无法支持随机访问,要访问一个指定位置的元素必须从头开始做指针移动。哈希表支持直接通过关键码得到值 其实数组就是一种哈希表 下标就是关键码 通过下标直接得到值 因此哈希表肯定需要做范围检查也有办法做范围检查的

5.

在这里插入图片描述答案:d
解答:首先a有m列,a[i][j]表示该元素在i行j列,i*m表示0至i-1行共有几个元素,再加上第i行的j个元素,由于是从a[0][0]算起,再加上1就是a[i][j]所在位置

6.

在这里插入图片描述
答案:b
解答:线性表可以分顺序存储和链式存储。

7.

在这里插入图片描述答案:a
解答:33-3=30,类似蚂蚁的问题,碰撞后理解为身体都穿过去了。

8.

在这里插入图片描述答案:b
解答:Java中允许先定义二维数组的外层长度

9.

在这里插入图片描述
答案:a
解答:线性表有两种存储结构:
1.顺序存储结构—顺序表。顺序表以数组形式出现,可以取任意下标访问,所以是一种随机存取的存储结构。
2.链式存储结构—链表。链表以链表的形式出现,必须从头开始访问,所以是一种顺序存取的存储结构。

10.

在这里插入图片描述答案:c
解答:2、3、5的最小公倍数是30。[ 1, 30]内符合条件的数有22个。如果能看出[ 31, 60]内也有22个符合条件的数,那问题就容易解决了。也就是说,这些数具有周期性,且周期为30。第1500个数是:1500/22=68 1500%68=4。也就是说:第1500个数相当于经过了68个周期,然后再取下一个周期内的第4个数。一个周期内的前4个数:2,3,4,5。故,结果为68*30=2040+5=2045

11.

在这里插入图片描述答案:b,c,d
解答:
a、数组是能被Object 一切能被Obj 接收的均为对象;
b、数组不是原生类 原生类有8种, int double boolean float byte short long char ;
c、语法错误、
d、数组的大小一开始就已经确定了 int[]test=new test[2];

12.

在这里插入图片描述答案:c
解答:
A,链式存储情况下不一致
B,优劣要看使用情况
D,二维数组是顺序存储的线性表,元素就是线性表中的元素

13.

在这里插入图片描述
答案:a,c,d
解答:
1.list 底层数据结构为双向链表,支持快速增删
2.vector 底层数据结构为数组,支持快速随机访问
3.map 底层数据结构为红黑树,除了hashmap无序,其他实现结构有序,不重复
4.set 底层数据结构为红黑树,除了hashset无序,其他实现结构有序,不重复

14.

在这里插入图片描述
答案:c
解答:二维数组初始化可以省略第一维长度, 第二维不可省

15.

在这里插入图片描述答案:a,c,e
解答:
A选项,如果是数组只要遍历一半元素就可以了,翻转的思想类似于字符串逆序,但链表如果要完成逆序,就算只是修改指针也要把所有的元素遍历完,所以相比而言数组还是比链表快的。
B链表只需插入一个节点,数组需移动n个元素
C选项的访问中间节点,数组可以通过array[length/2]访问,链表需要依次查找到中间节点。
D头结点都一样
E 数组是顺序存储的线性表,相对于链表而言主要的优点就是可以通过下标随机访问数组中的任意元素。

16.

在这里插入图片描述答案:a,b
解答:顺序存储结构中,数据元素存放在一组地址连续的存储单元中,每个数据元素地址可通过公式LOC(ai)=LOC(a1)+(i-1)L计算得到,从而实现了随机存取。对于链式存储结构,要对某结点进行存取,都得从链的头指针指向的结点开始,这是一种顺序存取的存储结构。

17.

在这里插入图片描述答案:a
解答:队列的队长=(rear-front+queue)%queue

18.

在这里插入图片描述
答案:c,d
解答:
1.定义一维数组时,必须显式指明数组的长度;
2. 定义多维数组时,其一维数组的长度必须首先指明,其他维数组长度可以稍后指定;
3. 采用给定值初始化数组时,不必指明长度;
4. “[]” 是数组运算符的意思,在声明一个数组时,数组运算符可以放在数据类型与变量之间,也可以放在变量之后。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值