【发布时间】:2019-04-21 14:43:28
【问题描述】:
你开始没有。元素假设 N,您将获得 N 个数字,下一行有一个空格。确定该数组中的案例数,使其遵循以下规则 - i+j=array[i]+array[j] 其中 i 和 j 是索引,i<j。
例如, 输入-
5
1 0 2 4 3
输出-
4
说明-
Elements of array at index (0,1), (1,3), (3,4) and (0,4) follows the above rule
现在,我可以通过遍历所有元素使用 O(n*n) 来解决它。你能想出优化的代码吗?
我在python中的代码如下:
n=int(input())
arr=list(map(int,input.split(' ')))
count=0
for i in range(n):
for j in range(i+1,n):
if(i+j==arr[i]+arr[j]):
count+=1
print(count)
我的Java代码(sn-p)如下:
int n=sc.nextInt(); //sc is scanner
int a[]=new int[n];
for(int i=0;i<n;i++)
{
a[i]=sc.nextInt();
}
int count=0;
for(int i=0;i<n;i++)
{ for(int j=i+1;j<n;j++)
if(i+j==a[i]+a[j])
count++;
}
System.out.println(count);
【问题讨论】:
-
你已经有什么代码了?
-
你做的就是这样做的方式,因为数字不需要遵循任何规则,可以是任意的
-
@Mark 已经提到了我的代码。请检查。
-
@Ronny 这与 Java 有什么关系?
-
如果您的代码运行没有错误,Code Review 可能是一个更好的询问地点。
标签: java python algorithm optimization