关于数组的几道面试题
时间:2010-09-15 来源:frankzfz
#include <stdio.h> |
2.求两个有序数组的共同元素
给定两个含有n个元素的有序(非降序)整型数组a和b,求出其共同元素,比如
a = 0, 1, 2, 3, 4
b = 1, 3, 5, 7, 9
输出 1, 3
分析
充分利用数组有序的性质,用两个指针i和j分别指向a和b,比较a[i]和b[j],根据比较结果移动指针,则有如下三种情况
1. a[i] < b[j],则i增加1,继续比较
2. a[i] == b[j],则i和j皆加1,继续比较
3. a[i] < b[j],则j加1,继续比较
重复以上过程直到i或j到达数组末尾。
// 找出两个数组的共同元素 |
3.数组的循环右移
【题目】有一个整数数组,现要求实现这个整数数组的循环右移。如:1,2,3,4,5 则循环右移两位后结果是:4,5,1,2,3。
void RightCircleShift_04(int buffer[],int shift) |
1、先将整个数组反转。
2、然后再反转前shift个元素。
3、接着再反转后N-shift个元素
4.去除数组中重复数字问题
(采用hash表法解决)
void RemoveBufferRepNum_01(int buffer[]) |