java数组maxSpan
谁能解释一下这个问题和逻辑吗。我无法理解: 考虑一个图形中某个值的最左边和最右边的外观 大堆我们可以说“跨度”是两个元素之间的元素数 包括两个。单个值的范围为1。返回最大值 在给定数组中找到span。(效率不是优先事项。) 如果您在上面的链接中引用托管在GitHub上的代码。 正如您在文档中所读到的,maxSpan函数返回一个数的两次出现之间的(max)个元素数java数组maxSpan,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,谁能解释一下这个问题和逻辑吗。我无法理解: 考虑一个图形中某个值的最左边和最右边的外观 大堆我们可以说“跨度”是两个元素之间的元素数 包括两个。单个值的范围为1。返回最大值 在给定数组中找到span。(效率不是优先事项。) 如果您在上面的链接中引用托管在GitHub上的代码。 正如您在文档中所读到的,maxSpan函数返回一个数的两次出现之间的(max)个元素数 例如: 最大跨度([1,2,1,1,3])→ 4 数组中的第一个“1”和最后一个“1”元素生成的maxSpan值为4。public
例如:
最大跨度([1,2,1,1,3])→ 4
数组中的第一个“1”和最后一个“1”元素生成的maxSpan值为4。
public int maxSpan(int[]arr){
public int maxSpan(int[] arr) {
int n = arr.length;
if(n == 0)
return 0;
if(n == 1)
return 1;
int loIdx = 0;
int hiIdx = 0;
for (int i = 0, j=n-1; i < n && j>=0; i++, j--) {
if(arr[0]== arr[i])
loIdx = i;
if(arr[n-1] == arr[j])
hiIdx = j;
}
return Math.max(loIdx+1, n-hiIdx);
}
int n=阵列长度;
如果(n==0)
返回0;
如果(n==1)
返回1;
int-x=0;
int-hiIdx=0;
对于(inti=0,j=n-1;i=0;i++,j--){
if(arr[0]==arr[i])
x=i;
如果(arr[n-1]==arr[j])
hiIdx=j;
}
返回数学最大值(LODIX+1,n-hiIdx);
}
有什么需要解释的吗?我看不到问题。如果你在寻找谜语或其他东西的答案,你应该将其发布在Puzzling.SE上。我猜maxSpan只是返回数组的长度?这并不是说Google或StackOverflow已经找到了你问题的答案。。。有人能帮我解决这个问题吗?我是新手,你能详细说明一下你在这里做了什么吗。仅倾销代码不被视为有效答案
public int maxSpan(int[] arr) {
int n = arr.length;
if(n == 0)
return 0;
if(n == 1)
return 1;
int loIdx = 0;
int hiIdx = 0;
for (int i = 0, j=n-1; i < n && j>=0; i++, j--) {
if(arr[0]== arr[i])
loIdx = i;
if(arr[n-1] == arr[j])
hiIdx = j;
}
return Math.max(loIdx+1, n-hiIdx);
}