1
0
mirror of https://github.com/Maaaac/408.git synced 2026-10-29 03:04:54 +08:00

Update 09

This commit is contained in:
Maaaac
2021-11-25 22:36:19 +08:00
parent 87a9597bf9
commit a4be409bd6

40
09
View File

@@ -361,5 +361,43 @@ void BtreeToExp(BTree *root,int deep){
/*2018
给定一个含n个整数的数组,设计一个时间上尽可能高效的算法,找出数组中未出现的最小正整数
例如,数组{-5,3,2,3}中未出现的最小正整数是1;数组{1,2,3}中未出现的最小正整数是4
*/
/*思路:
由于A中只有n个数,因此若最小的n个正整数全在A内的话,未出现的最小正整数则为n+1,反之,将A中n个数扫一遍后,1~n中有数没被扫到,则最小的那个为所求
分配一个用于标记的数组B[n],用来记录A中是否出现了1~n中的正整数,B[0]对应正整数1,B[n-1]对应正整数n,初始化B中所有值为0
从A[0]开始遍历A,若0<A[i]<=n,则令B[A[i]-1]==1,否则不做任何操作(对负数和大于n的数都不做处理)
对A遍历结束后,开始遍历数组B,找到第一个满足B[i]==0的下标,若找到,返回结果(i+1),否则返回(n+1)
*/
int findMissMin(int A[];int n){
int i,*B; //标记数组
B = (int *)malloc(sizeof(int)*n); //分配空间
memset(B,0,sizeof(int)*n); //赋值为0
for(i=0;i<n;i++){
if(A[i]>0 && A[i]<=n){
B[A[i]-1] == 1;
}
}
for(i=0;i<n;i++){
if(B[i] == 0){
break;
}
return i+1;
}
return n+1;
}
*/
/*2019
设线性表L=( a1,a2,a3,...,a(n-2),a(n-1),an )采用带头结点的单链表保存,链表中结点定义如下:
typedef struct node{
int data;
struct node *next;
}NODE;
设计一个空间复杂度为O(1)且时间上尽可能高效的算法,重新排列L中的各结点,得到线性表L'( a1,an,a2,a(n-1),a3,a(n-2),... )
*/
/*思路:
观察
*/