《算法零基础100讲》(第62讲) 贪心(一) 最值贪心

《算法零基础100讲》第62讲介绍了最值贪心策略,通过寻找字符串中最大奇数子串来阐述贪心问题。文章解释了如何证明贪心策略的正确性,并提供了源码分析,强调在保证正确性前提下每次选取最大或最小元素。此外,还推荐了相关数据结构学习资源。

一、概念定义

  贪心问题让人又爱又恨,因为贪心问题没有固定的解法,相比动态规划而言,贪心问题要难起来,会更难。
  贪心问题的难点在于 「 证明 」,也就是说,你怎么知道这种做法是对的,有时候可能只是想当然。
  本文会介绍一种比较常用的贪心策略,就是最值贪心。简而言之,就是在保证问题正确性的前提下,每次取最大的,或者每次取最小的,从而解决问题。

二、题目描述

  给你一个字符串num,表示一个大整数。请你在字符串 num的所有非空子字符串中找出值最大的奇数 ,并以字符串形式返回。如果不存在奇数,则返回一个空字符串 “” 。
  子字符串是字符串中的一个连续的字符序列。

三、算法详解

  贪心问题,往往是伴随着一些其它问题出现的,所以我们要从问题中找到一些 “常识性” 问题。比如这个问题中,有这么些常识性问题:
  (1)奇数的充要条件是数字的最后一位是奇数;
  (2)数字的长度越长,数字越大;
  基于第(1)点,这个子串的最后一个位必须是奇数;
  基于第(2)点,这个大整数,从第 0 个位置开始,一定比从一个非零位置开始,长度更长。·

四、源码剖析

char 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

英雄哪里出来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值