0 0

求一道算法题目3

有一个数组A{1,3,4,5,7,8,9,10......},长度为M,注意此数组按升序排列,有另一数组B{2,3,4,5,6,7,8,9,...}长度为N,注意此数组也是升序的,现在要求用一个循环统计两个数组中共有的元素的个数。注意是要求一个循环统计实现。

 

OO 
2011年4月21日 16:17

4个答案 按时间排序 按投票排序

0 0

采纳的答案

把其中的一个数组放数一个集合中,然后用一个循环把另外的一个数组一个一个的进行比较.并设计一个指示器,如果后面数组中的数大于前面数组就不用比较,减少不必要的循环次数^^

2011年4月21日 16:37
0 0

先放进把数组中的元素放进集合中,然后判断集合中是否有相同的元素,有的话就移除该元素,同时给一个Integer类型的标识,移除一个就对该标识加1
可以参考如下代码......

 List<String> tmpList = new ArrayList<String>(tmpStrIds);
		    List<String> delList = new ArrayList<String>();
		    for(int i=tmpList.size()-1;i>=0;i--){
		    	String user = tmpList.remove(i); //删除该元素
		        if (delList.contains(user) ||  //是否删除过
		              tmpList.contains(user)) {  //是否删除后还有相同的
		            delList.add(user);
		        } else {
		            tmpList.add(user); //如果没有重复的再放回去
		        }
		    }

2011年4月22日 11:10
0 0

// 求两个有序数组的交集
// a1,a2为源数组
// len1,len2分别为源数组的长度
// 返回交集的个数
int intersect(int *a1,int len1,int *a2,int len2)
{
	int i=0,j=0,k=0;
	while (i<len1 && j<len2)
	{
		if(a1[i] == a2[j])
		{
			k++;i++;++j;
		}
		else if(a1[i] > a2[j])
			++j;
		else
			++i;
	}
	return k;
}

2011年4月21日 16:42
0 0

该死的zoozooll

2011年4月21日 16:19

相关推荐

Global site tag (gtag.js) - Google Analytics