当前位置: 首页 > news >正文

新余网站制作深圳网络运营推广公司

新余网站制作,深圳网络运营推广公司,想自己做网站,网站建设全套Q1. 是否能用贪心算法?为什么? 先预设一个策略,每当当前的nums[i]满足可以 "成块",就直接让这个数成块,也就是说之后的遍历过程中不会将这个数在考虑到自己的块内, "成块" 是指只要只…


Q1. 是否能用贪心算法?为什么?

       先预设一个策略,每当当前的nums[i]满足可以  "成块",就直接让这个数成块,也就是说之后的遍历过程中不会将这个数在考虑到自己的块内,

        "成块" 是指只要只需要将nums[i]放到前面的某个子数组的尾部,然后将这个子数组进行排序,就能得到一个拥有连续自然数的子数组,就称为成块

       能够使用谈心算法是因为有如下规律

       规律1. 以nums[i]为结尾的成块的子数组,其中的最大值不能小于 i

                 反证法:假设nums[i]为结尾的成块的子数组,其中最大值小于 i

                那么对这个子数组进行排序后,最后一个值即为maxval,且其下标标定位i

                子数组最开始的那个下标设为j, 那么子数组中应该有 i - j + 1个元素

                又根据成块的定义,这里将会缺少自然数填满i - j + 1个位置矛盾

                故,想要成块,子数组的最大值不能小于 i 

下面以图示的方法进一步说明,假设红线前的0 1 2已经成块了

如果 nums[7] < 7 那么一定不能成块,因为此时只能有 6 5 4 3 2 1 0 能放入这8个黑框中,

        规律2. 以nums[i]为结尾的成块的子数组,其中的最大值不能大于 i

                证明与上面类似,矛盾之处在于如果最大值大于 i ,则将会多出来一个元素

所以要想成块只能是maxval == i

class Solution {
public:int maxChunksToSorted(vector<int>& arr) {int n = arr.size();int ret = 0;int curmax = 0;for(int i = 0; i < n; ++i){curmax = max(curmax, arr[i]);if(curmax == i){ret++;}}return ret;}
};

http://www.hengruixuexiao.com/news/52553.html

相关文章:

  • 前海网站建设千锋教育培训机构怎么样
  • 做网站怎么qq邮箱验证百度app平台
  • 旅游网站这么做宁波网站推广哪家公司好
  • 什么大型网站用python做的模板建站优点
  • wordpress账户密码忘记windows优化大师手机版
  • 瓯北网站制作公司优化关键词规则
  • smartstar企业wap网站系统seo工具软件
  • 阿里云注册网站之后怎么做网站短视频剪辑培训班多少钱
  • 做网站的用什么主机好简述seo的概念
  • 上海哪家做网站免费制作自己的网站
  • 建店前期网站开通怎么做分录西安百度爱采购推广
  • 宁波网站制作企业南宁seo排名收费
  • 日本javaapp陕西seo优化
  • 网站建设优化服务效果seo工资
  • wordpress 主题不显示seo搜索引擎优化推广
  • 黑客网站免费网站实时seo排名点击软件
  • 校园官方网站建设网站首页模板
  • 自己的卡盟网站怎么做分站宁波seo的公司联系方式
  • 广东高端网站建设报价百度升级最新版本下载安装
  • 网站怎么做排名靠前搜索引擎免费登录入口
  • 深圳华强北赛格大楼晃动网络优化培训
  • wordpress哪里找域名seo网站搭建是什么
  • 企业网站 php网络服务商在哪咨询
  • 网站建设工具最简洁的关键词查询工具包括哪些
  • 知名网站建设官网自己做网站制作流程
  • 一个网站建设流程腾讯广告平台
  • 移动端模板 wordpress什么是网站seo
  • 网站开发工程师是做什么的引流推广犯法吗
  • 怎样做网站的反链站长工具在线免费
  • 网站开发使用api对seo郑州网站seo优化