上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

力扣hot100 最小路径和 多维DP 滚动数组 一题多解

guduadmin567月前

Problem: 64. 最小路径和

力扣hot100 最小路径和 多维DP 滚动数组 一题多解,在这里插入图片描述,第1张

文章目录

  • 思路
  • 💖 朴素版
  • 💖 空间优化版

    思路

    👨‍🏫 路飞

    力扣hot100 最小路径和 多维DP 滚动数组 一题多解,在这里插入图片描述,第2张

    💖 朴素版

    ⏰ 时间复杂度: O ( n m ) O(nm) O(nm)

    🌎 空间复杂度: O ( n m ) O(nm) O(nm)

    class Solution {
    	public int minPathSum(int[][] grid)
    	{
    		int n = grid.length;
    		if (n == 0)
    			return 0;
    		int m = grid[0].length;
    		int[][] f = new int[n][m];
            f[0][0] = grid[0][0];
    		for (int i = 1; i < m; i++)
    			f[0][i] = f[0][i - 1] + grid[0][i];
    		for (int i = 1; i < n; i++)
    			f[i][0] = f[i - 1][0] + grid[i][0];
    		for (int i = 1; i < n; i++)
    			for (int j = 1; j < m; j++)
    				f[i][j] = Math.min(f[i - 1][j], f[i][j - 1]) + grid[i][j];
    		return f[n - 1][m - 1];
    	}
    }
    

    💖 空间优化版

    ⏰ 时间复杂度: O ( n m ) O(nm) O(nm)

    🌎 空间复杂度: O ( 1 ) O(1) O(1)

    class Solution {
        public int minPathSum(int[][] grid) {
            for(int i = 0; i < grid.length; i++) {
                for(int j = 0; j < grid[0].length; j++) {
                    if(i == 0 && j == 0) continue;//不处理
                    else if(i == 0)  grid[i][j] = grid[i][j - 1] + grid[i][j];//第一行的,只能从左边过来
                    else if(j == 0)  grid[i][j] = grid[i - 1][j] + grid[i][j];//第一列的,只能从上面过来
                    else grid[i][j] = Math.min(grid[i - 1][j], grid[i][j - 1]) + grid[i][j];//从上面或者左边较小的地方过来
                }
            }
            return grid[grid.length - 1][grid[0].length - 1];
        }
    }
    

网友评论

搜索
最新文章
热门文章
热门标签
 
 梦见去世的亲人又去世了  梦见狗咬自己的手指头  梦见在游泳然后游泳池水干了