This problem is actually an combination problem in probability. A list of arrays with m-1 down move and n-1 right move. thus the answer is (m+n-2)!/(n-1)!/(m-1)!
class Solution: # @return an integer def uniquePaths(self, m, n): # recurssive solution is very costy. (m,n)=(m,n) if m>n else (n,m) # make sure m is larger than n to save the computation res,jj=1,m while jj<=m+n-2: res,jj=res*jj,jj+1 jj=2 while jj<=n-1: res,jj=res/jj,jj+1 return res