一、实习:
二、数组类
1. [数组赋值] 已知数组 A[n], 求数组 B[n]。其中,B[i] = A[0] * ... * A[i-1] * A[i] * ... * A[n] 。(要求:不能用除法;时间 O(n), 空间 O(1))
void getElemOfB(int *B, int *A, int n) { B[0] = 1; for(int i = 1; i < n; ++i) B[i] = A[i-1] * B[i-1]; int tmp = 1; for(int i = n-2; i >= 0; --i) { tmp *= A[i+1]; B[i] *= tmp; }}
2. [数组统计] 已知整型数组 A[n] 中的元素范围为 1~n,统计 1~n 中的数字各出现多少次。(要求:时间 O(n), 空间 O(1))
void repeats(int A[], int n) { for(int i = 0; i < n; ++i) { if(A[i] % n == 0) A[i] -= n; /* 本身存的为 n */ A[A[i] % n] += n; } for(int elem = 1; elem <= n; ++elem) printf("elem = %d, occurs = %d\n", elem, A[elem % n] / n);}
3. [数组去重]
4. [数组 && ]
5. [数组建堆]数组 和
6. []
7. []
8. []
9. [字符串数组] ,,
10.[]
三、链表类
四、图类
五、哈希