临走前,练练手,网上随便找了一道华为的机试题,权当练手,由于是第一题,题目相对比较简单,大概花了十分钟搞定。
“1.从两个数组的最后一个元素比较两个数组中不同元素的个数,如有array1[5]={77,21,1,3,5}, array2[3]={1,3,5},从array1[4]与array2[2]比较开始,到array1[2]与array[0]比较结束。这样得出它们不同的元素个数为0,若array1[6]={77,21,1,3,5,7},那么他们不同的元素为3。
函数原型为 int compare_array( int len1, int array1[], int len2, int array2[] );
其中,len1与len2分别为数组array1[]和array2[]的长度,函数返回值为两个数组不同元素的个数。”
#include <stdio.h>
int compare_array(int len1, int array1[], int len2, int array2[])
{
int countOfSame = 0;
int len = 0;
int i=0;
if (len1 > len2)
{
len = len2;
}
else
{
len = len1;
}
for (i; i<len; i++)
{
if (array1[len1-i]==array2[len2-i])
countOfSame++;
}
return countOfSame;
}
int main(void)
{
int array1[6] = {7,12,1,2,3,4};
int array2[5] = {12,7,1,3,5};
int count;
count = compare_array(6, array1, 5, array2);
printf("Number of same elementis %d\n", count);
return 0;
}
大致思路:先比较得出两个数组长度中的较小值len,从两个数组最后一个数值开始比较,若相同则计数增1,,直到比较所有len个从数组尾部起始对应的两个数组中的元素值。
嗯,每天小练一把!