编程语言
首页 > 编程语言> > ⑭ 算法设计思想之“贪心算法”

⑭ 算法设计思想之“贪心算法”

作者:互联网

一、理论

1. 简介

2. 零钱兑换

输入: coins = [1, 2, 5], amount = 11
输出: 3
解释: 11 = 5 + 5 + 1

输入: coins = [1, 3, 4], amount = 6
输出: 3
解释: 6 = 4 + 1 + 1

二、刷题

1. 分饼干(455)

1.1 题目描述

1.2 解题思路

输入: g = [1,2,3], s = [1,1]
输出: 1
解释:
你有三个孩子和两块小饼干,3个孩子的胃口值分别是:1,2,3
虽然你有两块小饼干,由于他们的尺寸都是1,你只能让胃口值是1的孩子满足
所以你应该输出1

1.3 解题步骤

function findContentChildren(g, s) {
  const sortFunc = (a, b) => {
    return a - b;
  }
  g.sort(sortFunc);
  s.sort(sortFunc);
  let i = 0;
  s.forEach(n => {
    if(n >= g[i]) {
      i += 1;
    }
  })
  return i
}

1.4 时间复杂度&空间复杂度

2. 买卖股票的最佳时机(122)

2.1 题目描述

2.2 解题思路

输入: prices = [7,1,5,3,6,4]
输出: 7
解释:
在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4
随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3

2.3 解题步骤

function maxProfit(prices) {
  let profit = 0;
  for(let i = 1; i < prices.length; i++) {
    if(prices[i] > prices[i - 1]) {
      profit += prices[i] - prices[i - 1]
    }
  }
  return profit
}

2.4 时间复杂度&空间复杂度

三、总计 -- 技术要点

标签:饼干,思想,孩子,复杂度,算法,prices,最优,贪心
来源: https://www.cnblogs.com/pleaseAnswer/p/15879709.html