- 对矩阵压缩存储是为了()
- 一个非空广义表的表尾()
- 编写一个方法,去掉一个数组的重复元素。
- 给定如下的 n*n 的数字矩阵,每行从左到右是严格递增, 每列的数据也是严格递增
- 在一个长度为 n 的整形数组 a 里,除了三个数字只出现一次外,其他的数字都出现了 2 次。请写程序输出任意一个只出现一次的数字,程序时间和空间复杂度越小越好。
- 数组不适合作为任何二叉树的存储结构()
- 从逻辑结构上看,n 维数组的每个元素均属于 1 个 n 维向量()
- 稀疏矩阵压缩存储后,必会失去随机存取功能()
- 数组必须是同类型值的集合()
- 数组可看成线性结构的一种推广,因此与线性表一样,可以对它进行插入,删除等操作()
- 一个稀疏矩阵 Am*n 采用三元组形式表示,若把三元组中有关行下标与列下标的值互换,并把 m 和 n 的值互换,则就完成了 Am*n 的转置运算()
- 下面描述中正确的为:
- 二维以上的数组其实是一种特殊的广义表()
- 广义表的取表尾运算,其结果通常是个表,但有时也可是个单元素值()
- 若一个广义表的表头为空表,则此广义表亦为空表()
- 广义表中的元素或者是一个不可分割的原子,或者是一个非空的广义表()
- 数组是一种线性结构,因此只能用来存储线性表()
- 广义表(((a,b,c),d,e,f))的长度是 4()
- What is the difference between a linked list and an array?
对矩阵压缩存储是为了()
方便存储
提高运算速度
减少存储空间
B,如果邻接表,还要存指针,并没有方便存储
D,不管是,邻接矩阵还是邻接表,都节省了空间
一个非空广义表的表尾()
只能是子表
只能是原子
是原子或子表
如果广义表 LS=(a1,a2…an)非空,则 a1 是 LS 的表头,其余元素组成的表(a2,a3,..an)是称为 LS 的表尾。
根据定义,非空广义表的 表头是一个元素,它 可以是原子也可以是一个子表, 而表尾则必定是子表。例如:LS=(a,b),表头为 a,表尾是(b)而不是 b.另外:LS=(a)的表头为 a,表尾为空表().
2、非空广义表,除表头外,其余元素构成的表称为表尾,所以非空广义表尾一定是个表
编写一个方法,去掉一个数组的重复元素。
链接:https://www.nowcoder.com/questionTerminal/21d25135db744ee0868d7bfc23fb2f05 来源:牛客网 #include <stdio.h> #include <stdlib.h> #include <string.h> #define N 255 static int tmp[N]; void delete_duplication(char *src) { int i, j; int index; int length = strlen(src); for (i = 0; i < length; ++i) { /* code */ index = (int)(*(src + i)); tmp[index] += 1; if (tmp[index] == 1) { /* code */ printf("%c", index); } } } int main(void) { /* code */ //char str[] = "asadasddasfadsgdfggdfgsdf"; char str[] = "qwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnm"; delete_duplication(str); return 0; }
给定如下的 n*n 的数字矩阵,每行从左到右是严格递增, 每列的数据也是严格递增
1 2 3
3 5 6
4 8 9
现在要求设计一个算法, 给定一个数 k 判断出 k 是否在这个矩阵中。 描述算法并且给出时间复杂度(不考虑载入矩阵的消耗)
int searchK(int int_arr[][],int n,int startlow,int startclm,int k) { int lefttemp=0; int downtemp=0; int i=0; while(int_arr[startlow+i][startclm+i] i++; if (i==n) return 0; else if(arr[i][i]==k) reuturn 1; else return searchK(int_arr,n,startlow,startclm+i,k)+searchK(int_arr,n,startlow+i,startclm,k); }
在一个长度为 n 的整形数组 a 里,除了三个数字只出现一次外,其他的数字都出现了 2 次。请写程序输出任意一个只出现一次的数字,程序时间和空间复杂度越小越好。
例如:a = {1,3,7,9,5,9,4,3,6,1,7},输出 4 或 5 或 6
C/C++:
void find(int* a , int n);
Java:
void find(int[] a);
int lowbit(int x) { return x&~(x-1); } void find(int* a , int n) { int i , xors; xors = 0; for(i = 0 ; i < n ; ++i) xors ^= a[i]; // 三个数两两的异或后 lowbit 有两个相同,一个不同,可以分为两组 int fips = 0; for(i = 0 ; i < n ; ++i) fips ^= lowbit(xors ^ a[i]); // 表示的是: flips=lowbit(a^b)^lowbit(a^c)^lowbit(b^c) int b; // 假设三个只出现一次的其中一个数为 b b = 0; for(i = 0 ; i < n ; ++i) { if(lowbit(xors ^ a[i]) == fips) b ^= a[i]; } // 成功找到三个数中一个数 cout<<b<<endl; }
数组不适合作为任何二叉树的存储结构()
错
也就是用一组连续的存储单元存放二叉树中的结点。
依据二叉树的性质,完全二叉树和满二叉树采用顺序存储比较合适,树中结点的序号可以唯一地反映出结点之间的逻辑关系,这样既能够最大可能地节省存储空间,又可以利用数组元素的下标值确定结点在二叉树中的位置,以及结点之间的关系。
从逻辑结构上看,n 维数组的每个元素均属于 1 个 n 维向量()
对
错
稀疏矩阵压缩存储后,必会失去随机存取功能()
对
错
三元组表示法就是在存储非零元的同时,存储该元素所对应的行下标和列下标。稀疏矩阵中的每一个非零元素由一个三元组(i,j,aij)唯一确定。矩阵中所有非零元素存放在由三元组组成的数组中。
数组必须是同类型值的集合()
错
数组属于线性结构,不是集合。
集合中值不能重复,数组中可以,所以数组不能是集合
数组可看成线性结构的一种推广,因此与线性表一样,可以对它进行插入,删除等操作()
错
一个稀疏矩阵 Am*n 采用三元组形式表示,若把三元组中有关行下标与列下标的值互换,并把 m 和 n 的值互换,则就完成了 Am*n 的转置运算()
错
(1)将矩阵的行列值交换。
(2)将每个三元组中的 i 和 j 相互调换。
(3)重排三元组之间的次序。
前两条是容易做到的,关键是如何实现第三条。即如何使 b.data 中的三元组是以 T 的行(M 的列)为主次序依次排列的。
下面描述中正确的为:
线性表的顺序存储表示优于链式存储表示。
线性表若采用链式存储表示时所有结点之间的存储单元地址可连续可不连续。
二维数组是其数组元素为线性表的线性表。
B,顺序存储和链式存储各有优缺点
C,链式存储可以连续,可以不连续,存储时不管其连续还是不连续,都是用指针指向下一个结点
D,二维数组是顺序存储的线性表,其元素都是线性表的元素
二维以上的数组其实是一种特殊的广义表()
对
错
比如三维表,则可以认为是数组元素为一个数组的广义表
广义表的取表尾运算,其结果通常是个表,但有时也可是个单元素值()
错
若一个广义表的表头为空表,则此广义表亦为空表()
错
例如:
广义表()和(())不同。前者是长度为 0 的空表,对其不能做求表头和表尾的运算;而后者是长度为 l 的非空表(只不过该表中惟一的一个元素是空表),对其可进行分解,得到的表头和表尾均是空表()
广义表中的元素或者是一个不可分割的原子,或者是一个非空的广义表()
错
数组是一种线性结构,因此只能用来存储线性表()
错
广义表(((a,b,c),d,e,f))的长度是 4()
错
深度:去掉几层括号可以到最后一部分。
比如: 例如 E((a,(a,b),((a,b),c)))的长度和深度分别为 1 和 4
What is the difference between a linked list and an array?
Search complexity when both are sorted
Dynamically add/remove
Random access efficiency
Data storage type
链表恰好相反,链表中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起。比如:上一个元素有个指针指到下一个元素,以此类推,直到最后一个元素。如果要访问链表中一个元素,需要从第一个元素开始,一直找到需要的元素位置。但是增加和删除一个元素对于链表数据结构就非常简单了,只要修改元素中的指针就可以了。如果应用需要经常插入和删除元素你就需要用链表数据结构了。