效率低下 最起码容易看得懂?将就看吧
/*** @param {number[]} nums* @return {number}*/
var jump = function(nums) {let len = nums.length;if(len <= 1){return 0;}function calPossibleLastStep(index){let res = [];if(index >= len){return res;}if(index <= 0){return [0];}for(let i = index - 1; i >= 0; --i){if(i + nums[i] >= index){res.push(i);}}return res;}function calStepNum(lastIndex, countAlready = 0, curMin = Number.MAX_VALUE, minList = [], curList = []){// console.log('lastIndex:' + lastIndex + ', countAlready:' + countAlready);if(countAlready + 1 >= curMin){return curMin;}let minCount = -1;if(minList.some((el, index) => {if(el.index === lastIndex){minCount = el.count;return true;}return false;})){if(minCount > -1){if(minCount < countAlready + 1){return curMin;}}}curList.push({index: lastIndex,count: countAlready,});let res = calPossibleLastStep(lastIndex);if(res.includes(0)){// console.log('answer:' + (countAlready + 1));return countAlready + 1;}else{if(countAlready + 1 >= curMin){return curMin;}let min = curMin;for(let i = res.length - 1; i >= 0; i--){let r = calStepNum(res[i], countAlready + 1, min, minList, curList);if(r < min){minList = curList;min = r;}}return min;}}let result = calStepNum(len - 1);return result;
};
复制代码
转载于:https://juejin.im/post/5b238d896fb9a00e5326d545