我正在寻找2D阵列对角线的差之和。
import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.regex.*;
class Result {
public static int diagonalDifference(List<List<Integer>> arr)
{
int d1=0,d2=0;
int res;
for(int i=0;i<=arr.size();i++)
{
for(int j=0;j<=i;j++)
{
if(i==j)
{
d1=d1+arr.get(i,j);
}
if(i==arr.size()-j-1)
{
d2=d2+arr.get(i,j);
}
}
}
res=d1-d2;
return res;
}
}
public class Solution {
public static void main(String[] args) throws IOException
{
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));
int n = Integer.parseInt(bufferedReader.readLine().trim());
List<List<Integer>> arr = new ArrayList<>();
for (int i = 0; i < n; i++) {
String[] arrRowTempItems = bufferedReader.readLine().replaceAll("\\s+$", "").split(" ");
List<Integer> arrRowItems = new ArrayList<>();
for (int j = 0; j < n; j++) {
int arrItem = Integer.parseInt(arrRowTempItems[j]);
arrRowItems.add(arrItem);
}
arr.add(arrRowItems);
}
int result = Result.diagonalDifference(arr);
bufferedWriter.write(String.valueOf(result));
bufferedWriter.newLine();
bufferedReader.close();
bufferedWriter.close();
}
}
错误是:-** Solution.java:29:错误:接口列表中的方法获取不适用于给定类型;
d1 = d1 + arr.get(i,j);^必填:int
找到:int,int
原因:实际参数和形式参数列表的长度不同
其中E是类型变量:
E扩展了在接口列表中声明的对象
Solution.java:33:错误:接口列表中的方法无法应用于给定类型;
d2 = d2 + arr.get(i,j);^必填:int
找到:int,int
原因:实际参数和形式参数列表的长度不同
其中E是类型变量:
E扩展了在接口列表中声明的对象
2个错误**
您可以如下重写方法diagonalDifference
:
public static int diagonalDifference(List<List<Integer>> arr)
{
int d1=0,d2=0;
int res;
int size = arr.size();
for(int i=0;i<size;i++)
{
d1 += arr.get(i).get(i);
d2 += arr.get(i).get(size - i -1);
}
res=d1-d2;
return res;
}
您不需要List<List<Integer>>
,因为从您的代码中定义了一个不会再修改的int [] []数组,因此您可以传递以前定义的int[][] array
。