牛客网刷题(数组类型 1~30题)

130 阅读2分钟

676-644 = 32
32 = 2 * lengthOfArray + 2
所以lengthOfArray == 15
A[3][3] = 3 * lengthOfArray + 3 = 48
644 + 48 = 692

线性表的顺序存储就是数组,线性表的链式存储就是链表
题中,与存储方式有关,如果是链表,与i有关,如果是数组,与i无关,因为是随机存取

(tail-front+数组的size) % 数组的size == 循环队列中的元素个数

向量就是数组 二分查找,使用数组
堆排序,因为要调整堆,需要随机选取孩子节点,所以不适合使用链表,使用数组
快速排序,需要不断地调整节点的位置,小于轴的放在一边,大于轴的放在另外一边,所以使用链表
归并排序,不断地归并,将不同的排序结果合并起来,不断地插入节点,所以需要链表
插入排序,链表
基数排序(这个没弄清楚) ,使用链表

数组从0开始和从1开始,间隔数是不一样的,需要仔细区分

顺序存储是连续存储,所以存储密度大

出队:front = (front + 1)%sizeOfArray
入队:tail = (tail + 1)%sizeOfArray

一维数组是线性结构,但是二维数组不是线性结构:
多维数组,需要多对一,所以不是线性结构
邻接表的性质: 存在多少个顶点存放头结点的数组就有多少个表头结点,每个表头结点所指向的数组,存放着所有与此节点相连接的所有节点

j=0 与 j = 1的问题
j=0,添加一个元素,j+1,添加一个元素,j+1,这样,j的个数,就代表了剩余的元素的个数
表尾,是去除表头之后剩余的所有部分,
表头可以是单个元素,或者是广义表,但是表尾一定是广义表(即使是只有一个元素,或者是没有元素(空表))
链表的存储空间需要动态分配

数据存储类型就是存储的数据的类型,比如char,int等, 在链表或者数组中是一样的