Diagonal Difference

Sort by

recency

|

5838 Discussions

|

  • + 0 comments

    Python Brute Force Solution

    For the left-to-right diagonal: Loop through all elements, sum elements where row index == column index.

    For the right-to-left diagonal: Loop through all elements, sum elements where row index + column index == n-1.

    def diagonalDifference(arr):
        n = len(arr)
        left_diag = 0
        right_diag = 0
        for i in range(n):
            for j in range(n):
                if i == j:
                    left_diag += arr[i][j]
                if i + j == n-1:
                    right_diag += arr[i][j]
        return abs(left_diag - right_diag)
    

    Time Complexity: O(n²), two nested loops. Space Complexity: O(1)

    Optimal Solution You don't need to traverse every element, each diagonal has only n elements (one per row/column).

    Access the diagonals directly using index formulas in a single loop.

    def diagonalDifference(arr):
        n = len(arr)
        left_diag = 0
        right_diag = 0
        for i in range(n):
            left_diag += arr[i][i]
            right_diag += arr[i][n-i-1]
        return abs(left_diag - right_diag)
    

    Time Complexity: O(n), just one pass Space Complexity: O(1) >

    .

  • + 0 comments

    public static int diagonalDifference(List> arr) { // Write your code here int sum=0; for(int i=0; i

  • + 0 comments

    public static int diagonalDifference(List> arr) { int n = arr.size(); /// tam de la matriz int diagnonalPrincipal = 0; int diagonalSecundaria = 0;

        for(int i = 0; i<n;i++){
            diagnonalPrincipal += arr.get(i).get(i);
            diagonalSecundaria += arr.get(i).get(n-1-i);
        }
    
        return Math.abs(diagnonalPrincipal - diagonalSecundaria);
    
    
    }
    
  • + 0 comments

    This is my code using C: int diagonalDifference(int arr_rows, int arr_columns, int** arr) { int x = 0; int y = 0; for (int i = 0; i < arr_rows; i ++) { x += arr[i][i]; y += arr[arr_rows - i - 1][i]; }
    return abs(x-y); }

    Can some one explain why it is not possible to let int N = arr_rows?

  • + 0 comments

    O(n) typescript solution

    function diagonalDifference(arr: number[][]): number {
        // Write your code here
        let primarySum:number = 0;
        let secoundarySum:number = 0;
        
        for(let i=0; i<arr.length; i++) {
            let lastIndex:number = arr[i].length - 1;
            primarySum += arr[i][i];
            secoundarySum += arr[i][lastIndex - i];
        }
        
        return Math.abs(primarySum - secoundarySum);
    }