Java Vs. Python:为什么相同的代码返回不同的输出?



我无法弄清楚为什么完全相同的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;

}
}

蟒蛇代码::

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

dp = [[0]*(n+1)]*(m+1)不是在Python中定义2D列表的正确方法。请改用这个:dp = [[0]*(n+1) for _ in range(m+1)]

最新更新