Diagonal Difference

Sort by

recency

|

169 Discussions

|

  • + 0 comments
    public static int diagonalDifference(List<List<Integer>> arr) {
    // Write your code here
        Integer leftToRight = 0;
        Integer rightToLeft = 0;
        Integer result = 0;
        Integer n = arr.size();
    
        for(int i = 0; i < n ; i ++){
            leftToRight = leftToRight + arr.get(i).get(i);
            rightToLeft = rightToLeft + arr.get(i).get(n-1-i);
        }
         result = leftToRight - rightToLeft;
         return result < 0 ? -result:result;
    }
    
  • + 0 comments

    My Java solution:

     public static int diagonalDifference(List<List<Integer>> arr) {
            // Write your code here
            int           sumLeftToRight = 0;
            int           sumRightToLeft = 0;
            int           n              = arr.size();
    
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < n; j++) {
                    if (i == j) {
                        sumLeftToRight += arr.get(i).get(j);
                    }
                    if (i + j ==  (n - 1)) {
                        sumRightToLeft += arr.get(i).get(j);
                    }
                }
            }
            return Math.abs(sumLeftToRight - sumRightToLeft);
        }
    
  • + 0 comments

    My solution:

    public static int diagonalDifference(List<List<int>> arr)
        {
            int sizeCol = arr[0].Count;
            int diagonal1 = 0;
            int diagonal2 = 0;
            for(int i = 0; i<arr.Count; i++){
                for(int j = 0; j<sizeCol; j++){
                    if(arr[i][j] < - 100 || arr[i][j] > 100) 
                        throw new Exception("Numero invalido");
                        
                    if(i == j) diagonal1 += arr[i][j];
                }
                diagonal2 += arr[i][sizeCol - i - 1];
            }
            return Math.Abs(diagonal1 - diagonal2);
        }
    
  • + 0 comments

    Java

      public static int diagonalDifference(List<List<Integer>> arr) {
            int leftArr = 0;
            int rightArr = 0;
            
            int i=0;
            int j=arr.size()-1;
            while(i<arr.size()){
                leftArr = leftArr + arr.get(i).get(i);
                rightArr = rightArr + arr.get(i).get(j);
                i++;
                j--;
            }
            
            return Math.abs(leftArr - rightArr);
        }
    
  • + 0 comments

    C++:

    int GetLeftToRightDiagSum(vector<vector<int>>& arr)
    {
        int sum = 0;
        for(int i = 0; i < arr.size(); i++)
        {
            sum+= arr[i][i];
        }
        return sum;
    }
    
    int GetRightToLeftDiagSum(vector<vector<int>>& arr)
    {
        int sum = 0;
        int int_arr_size = arr[0].size() - 1;
        for(int i = 0; i < arr.size(); i++)
        {
            sum+= arr[i][int_arr_size - i];
        }
        return sum;
    }
    
    int diagonalDifference(vector<vector<int>> arr) {
        int a = GetLeftToRightDiagSum(arr);
        int b = GetRightToLeftDiagSum(arr);
        
        return (a > b) ? (a-b) : (b-a);
    }