题意:
Given two unsorted arrays A, B. They can contain duplicates. For each element in A , count elements less than or equal to it in array B .
给你两个数组A和B,他们可能包含重复的元素,对于每一个在A中元素a,计算在数组B中有多少个数小于或者等于a。
输入描述:
第一行表示测试的组数,第二行是n的大小,接下来的每两行分别表示一组测试中的,A和B数组。
输出描述:
对于任意的A[i]输出B中小于等于A[i]的个数,并且中间用逗号隔开’,’。每一组测试样例输出到一行。保证A[i]和B[i]<=N。
Constraints:
1<=T<=100
1<=N<=100
Example:
Input:
2
6
1 2 3 4 7 9
0 1 2 1 1 4
7
95 39 49 20 67 26 63
77 96 81 65 60 36 55
Output:
4,5,5,6,6,6
6,1,1,0,4,0,3
分析:
题目要求时间复杂度是O(n),如果我们忽略这个要求,这个题目就是非常的简单,用一个两层的循环,对于每一个A[i]计算在B中小于等于A[i]的个数,直接输出即可。但是时间复杂度是O(n^2)。题目要求的时间复杂度是O(n),并没有要求空间复杂度是多少,此时我们可能会想到空间换时间的概念,多用额外的空间,当然就是hash表的使用了,如果我们在数组
B中之间纪录小于任意元素A[i]的值,就可以搞定了。对于任意的A[i],对应的结果就是hash[A[i]]的个数,我们注意到A[i]和B[i],最大是N。
方法如下:
第一步:申请一个数字count[101]表示hash表,初始化为0。
最终表示:co
名企笔试:Amazon笔试题(Count the elements)
最新推荐文章于 2022-04-24 22:17:58 发布