英文:
How to calculate the absolute difference between the sum of diagonals?
问题
public class DiagonalDifference {
    public static int calculateDiagonalDifference(int[][] matrix) {
        int n = matrix.length;
        int leftToRightSum = 0;
        int rightToLeftSum = 0;
        for (int i = 0; i < n; i++) {
            leftToRightSum += matrix[i][i];
            rightToLeftSum += matrix[i][n - i - 1];
        }
        return Math.abs(leftToRightSum - rightToLeftSum);
    }
    public static void main(String[] args) {
        int[][] matrix = {
            {1, 2, 3},
            {4, 5, 6},
            {9, 8, 9}
        };
        int result = calculateDiagonalDifference(matrix);
        System.out.println("The absolute difference between diagonals is: " + result);
    }
}
英文:
Given a square matrix, calculate the absolute difference between the sums of its diagonals.
For example, the square matrix is shown below:
1 2 3
4 5 6
9 8 9  
The left-to-right diagonal =15 . The right to left diagonal = 17. Their absolute difference is 2.
Please help with the code for Java.
答案1
得分: 1
考虑一个大小为 N*N 的数组矩阵。从左到右的对角线与行、列具有相同的索引。从右到左的对角线的索引之和为 N-1。一旦将它们相加,您可以减去它们并对其取绝对值:
int[][] matrix = ...; // 
int sum1 = 0;
int sum2 = 0;
for (int i = 0; i < matrix.length; ++i) {
    sum1 += matrix[i][i];
    sum2 += matrix[i][matrix.length - i - 1];
}
int result = Math.abs(sum1 - sum2);
英文:
Consider a matrix as an array of arrays of the size N*N. The left-to-right diagonal the row and the column have the same index. On the right to left diagonal the indexes sum up to N-1. Once you sum them, you can then subtract them and apply the absolute value to it:
int[][] matrix = ...; // 
int sum1 = 0;
int sum2 = 0;
for (int i = 0; i < matrix.length; ++i) {
    sum1 += matrix[i][i];
    sum2 += matrix[i][matrix.length - i - 1];
}
int result = Math.abs(sum1 - sum2);
答案2
得分: 1
public int diagonalDifferences(List<List<Integer>> list) {
    int rSum = 0;
    int lSum = 0;
    int i = 0;
    int j = 0;
    int dif = 0;
    for(i=0; i<list.size(); i++){
        for(j=0; j<list.get(0).size(); j++){
            if(i==j){
                lSum +=list.get(i).get(j);
            }
            if((i+j) == (list.get(0).size()-1)){
                rSum +=list.get(i).get(j);
            }
        }
    }
    dif = Math.abs(rSum - lSum);
    return dif;
}
英文:
 public int diagonalDifferences(List<List<Integer>> list) {
    int rSum = 0;
    int lSum = 0;
    int i = 0;
    int j = 0;
    int dif = 0;
    for(i=0; i<list.size(); i++){
        for(j=0; j<list.get(0).size(); j++){
            if(i==j){
                lSum +=list.get(i).get(j);
            }
            if((i+j) == (list.get(0).size()-1)){
                rSum +=list.get(i).get(j);
            }
        }
    }
    
    dif = Math.abs(rSum - lSum);
    return dif;
}
答案3
得分: 0
import java.util.*;
public class Main {
    static int diagonalDiff(int arr[][]) {
        int leftSum = 0;
        int rightSum = 0;
        int n = arr.length;
        for (int i = 0; i < arr.length - 1; i++) {
            leftSum = leftSum + arr[i][i];
            rightSum = rightSum + arr[i][n - 1 - i];
        }
        return java.lang.Math.abs(leftSum - rightSum);
    }
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.print("Enter size");
        int n = scan.nextInt();
        int a[][] = new int[n][n];
        System.out.print("Enter array elements");
        for (int i = 0; i < a.length - 1; i++) {
            for (int j = 0; j <= a[i].length - 1; j++) {
                a[i][j] = scan.nextInt();
            }
        }
        System.out.print(diagonalDiff(a));
    }
}
英文:
import java.util.*;
public class Main
{
static int diagonalDiff(int arr[][])
{
    int leftSum=0;
    int rightSum=0;
    int n=arr.length;
    for(int i=0;i<arr.length-1;i++)
    {
        leftSum=leftSum+arr[i][i];
        rightSum=rightSum+arr[i][n-1-i];
    }
    return java.lang.Math.abs(leftSum-rightSum);
}
public static void main(String[] args)
{
    Scanner scan=new Scanner(System.in);
    System.out.print("Enter size");
    int n=scan.nextInt();
    int a[][]=new int[n][n];
    System.out.print("Enter array elements");
    for(int i=0;i<a.length-1;i++)
    {
        for(int j=0;j<=a[i].length-1;j++)
        {
            a[i][j]=scan.nextInt();
        }
    }
    System.out.print(diagonalDiff(a));
}
}
答案4
得分: -1
使用Math.abs()来获取对角线之间的绝对差异
链接:https://www.tutorialspoint.com/java/lang/math_abs_int.htm
英文:
Use Math.abs() to get the absolute difference between the diagonals
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论