Twlig / issuesBlog

MIT License
3 stars 0 forks source link

二维数组填充 #103

Open Twlig opened 2 years ago

Twlig commented 2 years ago

在做最长公共子序列这道题时,需要采用一个二维数组

错误示范:

let dp = new Array(m + 1).fill(new Array(n + 1).fill(0))

上面是我最开始采用的填充方法,貌似看上去没问题,但是在实际使用时

dp[1][0] = 1

image 每一个都变成了1。反思了一下,应该是由于fill填充的是数组,相当于把new Array(n + 1)这个新数组的引用地址赋值给了new Array(m + 1)的每一个元素,导致每一个元素实际都是对应同一个array数组对象地址

正确用法

let dp = new Array(m + 1).fill(0).map(val => new Array(n + 1).fill(0))