1、最近距离排序
let me= {'name': '王强', 'home': 20},
let students = [{'name': '小明', 'home': 18},{'name': '张三', 'home': 24},{'name': '李四', 'home': 30},{'name': '王五', 'home': 16}
]
let res=students.sort((a,b)=>Math.abs(a.home-me.home)-Math.abs(b.home-me.home))
[{"name": "小明","home": 18},{"name": "张三","home": 24},{"name": "王五","home": 16},{"name": "李四","home": 30}
]
2、最优解问题的典型思路
不看整体看局部
单看i,分为取i和不取i的情况
max(
取i,
不取i
)
1)取i
前面的最优解加上i
2)不取i
dp[i]=max(
nums[i]+dp[i-2],
dp[i-1]
)
3)只有一项的时候
dp[0]=nums[0]
4)只有两项的时候
dp[1]=max(
nums[0],
nums[1],
)
/*** @param {number[]} nums* @return {number}*/
var rob = function(nums) {const length = nums.length;if (length === 0) return 0;const dp = Array(length).fill(0);for(let i = 0; i < length; i++) {if(i===0){dp[i]=nums[i]}else if(i===1){dp[i] = Math.max(nums[i], nums[i-1]);}else{dp[i] = Math.max( dp[i - 2] + nums[i],dp[i - 1]);}}return dp[length - 1];
};