javascript - 给定一个大小为 N 乘以 N 的方阵。 计算两条主对 Angular 线总和的绝对差

标签 javascript optimization logic

这是来自hackerrack.com的问题,

问题的解释

enter image description here

我解决了问题,但我找不到乐观的解决方案 , 我们可以使用对象字面量并找到最佳解决方案吗?

function getTwoDimention(input){
    var input = input.split('\n');
    var twoDimArr=[];
    for(var n=0; n<input.length; n++){ 
        var subarr = input[n].split(' ');
       if(subarr.length > 1){
           twoDimArr.push(subarr)
       }
    }
    return twoDimArr;
}

function getFristDiagonal(twoDimArr){
    var sum = 0;
    for(var i=0; i<twoDimArr.length; i++){
        for(var j=i; j<=i; j++){
           sum += parseFloat(twoDimArr[i][j]);
        }
    }
    return sum;
}
function getSecondDiagonal(twoDimArr){
    var sum = 0;j=twoDimArr.length-1;
    for(var i=0; i<twoDimArr.length; i++){

           sum += parseFloat(twoDimArr[i][j--]);
    }
    return sum;
}
function processData(input) {
    //Enter your code here
    twoDimArr = getTwoDimention(input);
    var firtDia = getFristDiagonal(twoDimArr);
    var secDia = getSecondDiagonal(twoDimArr);

    console.log(secDia - firtDia);

} 

实际工作代码在 jsfiddle

Fiddle Demo

也适用于 一些测试用例失败 , 当每行的元素数量不同时

提前谢谢了

最佳答案

函数 diagonalDifference(arr) {

let d1 = 0;
let d2 = 0;

let j = 0;
let k  = arr.length-1;


for(let i = 0; i < arr.length; i++){
    // from left to right
    d1 += arr[i][j]
    j++;

    // from right to left
    d2 += arr[i][k]
    k--;

}

const diff = Math.abs(d1-d2)
return diff;

}

关于javascript - 给定一个大小为 N 乘以 N 的方阵。 计算两条主对 Angular 线总和的绝对差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30823180/

相关文章:

javascript - 如果访问 amazon s3 对象,是否可以调用 lambda 函数?

assembly - Skylake 在一个周期内可以执行多少个 1 字节的 NOP

java - 如何快速制作我的 Android 应用程序

c++ - MPI_Allgather 是我的代码瓶颈吗?如何修复它?

artificial-intelligence - 如何将这句话转换成一阶逻辑格式正确的公式?

javascript - 当页面首次使用 Angular 2 加载时,如何将事件链接设置为默认链接

javascript - 使用 JavaScript 随机化一组现有图像的布局

php - 插入select语句,更改字段和逻辑思维

javascript - 防止意外的后退浏览

java - 找到三元组中间值的最快方法?