名企笔试:Amazon笔试题(Count the elements)

本文介绍了如何解决一个Amazon的笔试题目,要求在O(n)的时间复杂度内,对于给定的两个可能包含重复元素的数组A和B,计算每个A[i]在B中小于等于它的元素个数。通过使用哈希表存储B中每个元素出现的次数,并累加前缀和,可以达到题目要求的时间复杂度。
摘要由CSDN通过智能技术生成

题意:
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),并没有要求空间复杂度是多少,此时我们可能会想到空间换时间的概

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值