Java 请帮我理解这个密码测试
考虑到下面的可变性测试: 给定一个由Java 请帮我理解这个密码测试,java,algorithm,Java,Algorithm,考虑到下面的可变性测试: 给定一个由N整数组成的数组A,我们在二维平面上绘制N圆盘,使得I-th 圆盘以(0,I)为中心,半径为a[I]。我们说,J-th光盘和 K-如果J,则第个圆盘相交≠ K和J-th和K`-th光盘至少有一个通用光盘 重点 编写一个函数类解决方案{public int Solution(int[]a);}给定一个数组 AdescriptionNdiscs如上所述,返回相交的成对数 光盘。例如,给定N=6和: A[0]=1A[1]=5A[2]=2 A[3]=1A[4]=4A[
N
整数组成的数组A
,我们在二维平面上绘制N
圆盘,使得I
-th
圆盘以(0,I)
为中心,半径为a[I]
。我们说,J
-th光盘和
K-如果
J,则第个圆盘相交≠ K和
J-th和
K`-th光盘至少有一个通用光盘
重点
编写一个函数类解决方案{public int Solution(int[]a);}
给定一个数组
A
descriptionN
discs如上所述,返回相交的成对数
光盘。例如,给定N=6
和:
A[0]=1A[1]=5A[2]=2
A[3]=1A[4]=4A[5]=0
相交的圆盘出现在11对元素中:
0和1,0和2,
0和4,
1和2,
1和3,
1和4,
1和5,
2和3,
2和4,
3和4,
4和5 因此函数应该返回
11
函数应返回−1
如果相交对数超过10000000。假设: -
N
是范围[0..100000]
内的整数-数组A的每个元素都是[0..2147483647]范围内的整数 复杂性
- 期望的最坏情况时间复杂度为O(N*log(N))李>
- 预计最坏情况下的空间复杂度为O(N),超出输入存储(不计算 输入参数所需的存储)李>
这11对来自哪里,因为只有6个元素?只有6个元素,但可能的对数是
6*5/2=15
(一般形式:n(n-1)/2)
),因此,即使有6个点,也可能有多达15个(包括)交点,如上所述
磁盘数量不是最大的15个,因为一些“磁盘”不相交,例如,磁盘(0,0)
和磁盘(0,5)
没有公共点(0,0)
包括点{(0,0)、(0,1)}
,(0,5)
磁盘包括点{(0,5)}
。
由于这两组的交点为空-
(0,0);(0,5)
不是有效的磁盘对,不应包括在内。这11对磁盘与问题中所列的磁盘完全相同。每个光盘的中心位于(0,I)
,因此每个光盘与其两个相邻光盘之间的距离为1个单位(光盘0和光盘N-1除外,它们只有一个相邻光盘)。对于给定的特定数组:
- 光盘0的半径为1,因此它与光盘1相交
- 圆盘1的半径为5,因此它与圆盘0、2、3、4、5相交
- 圆盘2的半径为2,因此它与圆盘0、1、3、4相交
- 盘3的半径为1,因此它与盘2、4相交
- 圆盘4的半径为4,因此它与圆盘0、1、2、3、5相交
- 圆盘5的半径为0,因此它与没有圆盘的物体相交
如果你只从这个列表中计数唯一的对(例如2个相交的3个和3个相交的2个,这是一个),这是11个交点。
这两个对是从两个元素的30个可能组合中选择的,使用给定的规则。我认为我们需要考虑组合而不是排列。因此,这些对来自于在C(n,r)=C(6,2)
非常有用的解释中选择两个元素的15种可能组合