leetcode 62

二位动态数组初始化及释放

C++二维数组的动态声明

int **a  =  new int* [m]   //分配一个指针数组,将其首地址保存在a中   、

for(int i = 0; i < m; i++)   //为指针数组的每个元素分配一个数组

       a[i] = new int [n];

相当于产生了一个二维数组 a[m][n]了

静态声明的数组可以有公式(假设也是m行n列)

                                          b[i][j] = b[i*n +j]

这是因为数组b是连续的一片内存,而动态声明的数组任意的a[k]都是一个int*类型,即一个地址,所以只能a[i][j]或者*(*(a+i) + j)来访问数组的元素,而不能a[i*n + j]使用。

动态声明的数组,使用后需要释放内存。

for(int i = 0; i < m; ++i)

      delete []a[i];

delete []a;


class Solution {

public:
    int uniquePaths(int m, int n) {
       int **res=new int*[m];
        for(int k=0;k<m;k++)
            res[k]=new int[n];
       res[0][0]=1;
        for(int i=1;i<m;i++)
            res[i][0]=1;
        for(int j=1;j<n;j++)
            res[0][j]=1;
        for(int c=1;c<m;c++)
            for(int r=1;r<n;r++)
                res[c][r]=res[c-1][r]+res[c][r-1];
        return res[m-1][n-1];
        for(int l=0;l<m;l++)
            delete []res[l];
        delete []res;
    }
    
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值