题目的主要信息:

  • 给定一个二维数组,请你编写一个求和函数,计算出这个数组元素的和

具体做法:

我们仔细观察该数组,每行的元素个数或有不同,因此我们遍历数组的时候,对于第一维要求数组行数,来约束行遍历,对于每行数组,我们依旧要求数组行数,来约束列遍历,遍历的时候对访问到的元素累加即可。

alt

public class Main {
    public static void main(String[] args)
    {
        int[][]  arr = {{11,33,55},{22,44,66,88},{131,214,315,146},{928,827,726,625},{424,525}};
        int sum=add(arr);
        System.out.println(sum);
    }
    public static int add(int[][] arr)
    {
        int sum=0;
        for(int i = 0; i < arr.length; i++){ //遍历行数小于数组维度大小
            for(int j = 0; j < arr[i].length; j++) //每行列数等于该行的数组大小
                sum += arr[i][j]; //累加
        }
        return sum;
    }
}

复杂度分析:

  • 时间复杂度:O(nm)O(nm),其中nn为二维数组行数,mm为最大列数,遍历复杂度不会超过这两个相乘
  • 空间复杂度:O(1)O(1),遍历的时候没有额外空间,数组arr属于必要空间