【发布时间】:2020-04-18 19:06:07
【问题描述】:
我不明白为什么完全相同的 Python 代码在 Java 中给出不同的结果。我的意思是这两种语言的数组处理是否有任何区别,或者我在以下代码中缺少什么。
在以下代码中(即尝试解决https://leetcode.com/problems/unique-paths/),java
在 Python 被拒绝时被接受。我检查了可能的失败案例:uniquePaths(7,3) Python 返回结果 7 但 Java 返回 28(这是正确答案)。
我尝试调试并查找导致差异的代码中任何可能的差异,但没有运气。
任何人都可以就我的实施中的这种行为或任何错误提供一些见解吗?谢谢你
** Java 代码** ::
class Solution {
public int uniquePaths(int m, int n) {
int[][] dp = new int[m+1][n+1];
return pathHelper(1,1,m, n, dp);
}
private int pathHelper(int loc_x, int loc_y, int m, int n, int[][] dp){
if(loc_x==m && loc_y==n)return 1;
if(loc_x >m || loc_y>n)return 0;
if(dp[loc_x][loc_y] != 0)return dp[loc_x][loc_y];
int count = pathHelper(loc_x + 1, loc_y, m, n, dp) + pathHelper(loc_x, loc_y+1, m, n, dp) ;
dp[loc_x][loc_y] = count;
return count;
}
}
Python 代码 ::
class Solution(object):
def uniquePaths(self, m, n):
dp = [[0]*(n+1)]*(m+1)
return self.pathHelper(1,1,m, n, dp)
def pathHelper(self, loc_x, loc_y, m, n, dp):
if(loc_x==m and loc_y==n):
return 1
if(loc_x >m or loc_y>n):
return 0
if(dp[loc_x][loc_y] != 0):
return dp[loc_x][loc_y]
count = self.pathHelper(loc_x + 1, loc_y, m, n, dp) + self.pathHelper(loc_x, loc_y+1, m, n, dp)
dp[loc_x][loc_y] = count
return count
【问题讨论】:
-
变量和函数名称应遵循
lower_case_with_underscores样式。 if 语句周围的括号是不必要的(我建议使用某种 linter,它们很棒)。返回值 0 和 1 表示什么意思?