前端有关的算法

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、最优解问题的典型思路
前端有关的算法_第1张图片
不看整体看局部前端有关的算法_第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],
)

前端有关的算法_第3张图片

/**
 * @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];
};

你可能感兴趣的:(前端,java,javascript)