Seawolf 发表于 2019-9-29 03:46:11

leetcode 62. Unique Paths

A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below).

The robot can only move either down or right at any point in time. The robot is trying to reach the bottom-right corner of the grid (marked 'Finish' in the diagram below).

How many possible unique paths are there?


Above is a 7 x 3 grid. How many possible unique paths are there?

Note: m and n will be at most 100.

Example 1:

Input: m = 3, n = 2
Output: 3
Explanation:
From the top-left corner, there are a total of 3 ways to reach the bottom-right corner:
1. Right -> Right -> Down
2. Right -> Down -> Right
3. Down -> Right -> Right
Example 2:

Input: m = 7, n = 3
Output: 28

DP:二维数组
class Solution {
    public int uniquePaths(int m, int n) {
      
      int[][] memo = new int;
      
      for(int i = 1; i<= n; i++){
            for(int j = 1; j<= m; j++){
                memo = 1;
            }
      }
      
      for(int i = 2; i<= n; i++){
            for(int j = 2; j<= m; j++){
                if(i == 1 && j == 1) memo = 1;
               
                if((i == 1 && j != 1)) memo = memo;
                else if( (j == 1 && i!= 1)) memo = memo;
                else memo = memo + memo;
            }
      }
      
      return memo;
      
    }
}

DP: 优化为一维数组

class Solution {
    public int uniquePaths(int m, int n) {
      
      int[] memo = new int;
      int former = 0;
      
      for(int j = 0; j<= m; j++){
            memo = 1;
      }
      
      
      for(int i = 1; i<= n; i++){
            for(int j = 1; j<= m; j++){
               
                if((i == 1 && j != 1)) memo = memo;
                else if( (j == 1 && i!= 1)) former = 1;
                else {
                  memo = memo + former;
                  former = memo;
                }
            }
      }
      
      return memo;
      
    }
}
页: [1]
查看完整版本: leetcode 62. Unique Paths