
贪心算法
贪心思路及部分例题
努 力 小 子
憨憨一个
展开
-
使用贪心算法解决最小生成树问题。
使用贪心算法解决最小生成树问题。#include<iostream>#include<algorithm>using namespace std;const int MAX=100;const int MAX_length=10000;int n,m;int G[MAX][MAX];//相邻两边的长int d[MAX];bool V[MAX]={false};int prim(){ int sum=0; V[1]=true; d[1]=0; for(i原创 2020-05-21 15:54:26 · 2649 阅读 · 0 评论 -
连续子数组的最大和
输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。贪心:class Solution {public: int maxSubArray(vector<...原创 2020-03-08 13:34:37 · 232 阅读 · 0 评论 -
用递归合并两个排序的链表
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ...原创 2020-03-08 10:03:50 · 278 阅读 · 0 评论 -
最大子序和(贪心)
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。这道题目类似于贪心算法之买卖股票的最佳时机 II,但是属于升级版本,因为这道题中子数组要求连续,你得确定一段数组是它内部元素相加值最大。当然,我做任何题目...原创 2020-02-29 11:52:20 · 553 阅读 · 0 评论 -
贪心之判断子序列
给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。示例 1:s = “...原创 2020-02-29 19:06:49 · 279 阅读 · 0 评论 -
浅谈贪心算法
什么是贪心算法?维基百科对其的定义如下:贪心算法(英语:greedy algorithm),又称贪婪算法,是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。贪心算法在有最优子结构的问题中尤为有效。最优子结构的意思是局部最优解能决定全局最优解。简单地说,问题能够分解成子问题来解决,子问题的最优解能递推到最终问题的最优解。贪心算法与动态规...原创 2020-02-29 12:35:00 · 516 阅读 · 0 评论 -
贪心算法之柠檬水找零
在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。如果你能给每位顾客正确找零,返回 true ,否则返回 false 。示例 1:输入:[5,5,5...原创 2020-01-28 19:10:39 · 1842 阅读 · 1 评论 -
贪心算法之分发饼干
假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。注意:你可以假设胃口值为正。一个小...原创 2020-01-27 15:19:37 · 597 阅读 · 0 评论 -
贪心算法之买卖股票的最佳时机 II
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获...原创 2020-01-26 15:43:23 · 411 阅读 · 0 评论