对角线差解题

1 篇文章 0 订阅

给定一个方阵,计算其对角线之和之间的绝对差。

例如,方阵如下图所示:

1 2 3
4 5 6
9 8 9  

从左到右的对角线 =. 从右到左对角线 =. 他们的绝对区别是.

功能说明

完成下面的编辑器中的功能。

对角差分采用以下参数:

int arr[n][m] : 整数数组
返回

int:绝对对角线差
输入格式

第一行包含一个整数,, 方阵的行数和列数.
接下来的每一个行描述一行,, 并且由空格分隔的整数.

约束

输出格式

将矩阵的两条对角线之和之间的绝对差作为单个整数返回。

样本输入

3
11 2 4
4 5 6
10 8 -12

样本输出

	15

解释

主对角线是:

11
   5
     -12

沿主对角线求和:11 + 5 - 12 = 4

次对角线是:

	    4
    5
10

对角线的总和:4 + 5 + 10 = 19
差:|4 - 19| = 15

注意: |x| 是x的绝对值

解决代码

解决思路
1.首先第一个for循环拿到从左到右的所有数字然后存到arr1数组里面。
第一个数组 i = 0 取第一个0 所以 第一个应该为数组的 arr[0][0] ;
第二个数组 i = 1 取第二个1 所以 第二个应该为数组的 arr[1][1];
第二个数组 i = 2 取第二个2 所以 第二个应该为数组的 arr[2][2];
到这里就拿到了 从左到右的所有数组 并存到数组arr1中。
2.第二个fo循环 拿到从右到左的所有数组然后存到 arr2数组中。
第二个与第一个不同 for循环使用j–去实现
第一个数组 j= 2 取数组中的第三个数组 并且定义 io = 0; 就是拿到了 arr[2][0] 拿到了第三个的第一个数值 然后 io+=1。
第一个数组 j= 1 取数组中的第三个数组 并且定义 io = 1; 就是拿到了 arr[1][1] 拿到了第三个的第一个数值 io+=1。
第一个数组 j= 0 取数组中的第三个数组 并且定义 io = 2; 就是拿到了 arr[0][0] 拿到了第三个的第一个数值 最后当j===-1就跳出这个循环。
到这里就拿到了 从右到左的所有数组 并存到数组arr2中。
3.通过 方法getNum()分别到arr1 和arr2 的求和。
4.使用let result = Math.abs(getNum(arr1) - getNum(arr2)); 求出绝对值

	 var arr = [
            [1, 2, 3],
            [2, 3, 4],
            [2, 3, 5]
        ];

        function isArr(arr) {
            let arr1 = [];
            let arr2 = [];
            let io = 0;
            for (var i = 0; i < arr.length; i++) {
                console.log(arr[i][i])
                arr1.push(arr[i][i]); 
            }
            for (var j = arr.length - 1; j >= 0; j--) {
                arr2.push(arr[j][io]);
                io += 1
                console.log(i)
                if (j === -1) {
                    break;
                }
            }
            function getNum(arr) {
                let num = 0
                for (var i = 0; i < arr.length; i++) {
                    num += arr[i]
                }
                return num
            }
            console.log(getNum(arr1))
            console.log(getNum(arr2))
            let result = Math.abs(getNum(arr1) - getNum(arr2));
            console.log(result, 'result')
            console.log(arr1)
            console.log(arr2)
        }
        isArr(arr);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呵呵的牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值