问题出现:
原本我用以下的方法创建了一个二维数组,但当我用双层循环为其赋值时,发现我为数组中某个位置 dp[n][m] 赋值 k,其同列不同行的数 dp[n-1][m] 也被改变为 k
new Array(colLen).fill(new Array(rowLen).fill(0))
原因:由于数组在JavaScript中是引用类型,这意味着,当你使用`.fill()`方法填充外层数组时,实际上你在填充的是对内层数组的引用的副本,而不是每次都创建一个全新的数组。因此,当你改变一个子数组内的某个元素时,它们指向的实际上都是同一个数组,这导致了其他的“行”也跟随改变。
改进方法:
let dp = new Array(colLen);
for (let i = 0; i < colLen; i++) {
dp[i] = new Array(rowLen).fill(0);
}