我想为我的接受两个整数作为参数的函数的结果进行记忆化。我知道我可以将向量转换为字符串形式,例如“1-2”,但是否有其他方法可以实现呢?
我尝试使用一个数组作为映射(Map)的键,但由于没有数组之间的比较方法,这种方法行不通。
let map = new Map();
function gridTraveler(m, n){
if (m === 0 || n === 0)
return 0;
if (m === 1 && n === 1)
return 1;
if (map.has([m,n])) // 这里尝试用数组作为键,但无法有效工作
return map.get([m, n]);
let res = gridTraveler(m-1, n) + gridTraveler(m, n-1);
map.set([m, n], res);
return res;
}
为了有效地在Map中存储数组作为键,你可以将数组转化为一个字符串,例如m-n
,或者创建一个唯一的标识符来代表输入的二维坐标:
let map = new Map();
function gridTraveler(m, n){
const key = `${m},${n}`;
if (m === 0 || n === 0)
return 0;
if (m === 1 && n === 1)
return 1;
if (map.has(key))
return map.get(key);
let res = gridTraveler(m-1, n) + gridTraveler(m, n-1);
map.set(key, res);
return res;
}