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

网站建设公司(深圳信科)在哪里找软件开发公司

网站建设公司(深圳信科),在哪里找软件开发公司,中山外贸网站建设,网站建设市场报价738.单调递增的数字 贪心算法 题目要求小于等于N的最大单调递增的整数,那么拿一个两位的数字来举例。 例如:98,一旦出现strNum[i - 1] > strNum[i]的情况(非单调递增),首先想让strNum[i - 1]--&#…

738.单调递增的数字

贪心算法

题目要求小于等于N的最大单调递增的整数,那么拿一个两位的数字来举例。

例如:98,一旦出现strNum[i - 1] > strNum[i]的情况(非单调递增),首先想让strNum[i - 1]--,然后strNum[i]给为9,这样这个整数就是89,即小于98的最大的单调递增整数。

这一点如果想清楚了,这道题就好办了。

此时是从前向后遍历还是从后向前遍历呢?

从前向后遍历的话,遇到strNum[i - 1] > strNum[i]的情况,让strNum[i - 1]减一,但此时如果strNum[i - 1]减一了,可能又小于strNum[i - 2]。

这么说有点抽象,举个例子,数字:332,从前向后遍历的话,那么就把变成了329,此时2又小于了第一位的3了,真正的结果应该是299。

那么从后向前遍历,就可以重复利用上次比较得出的结果了,从后向前遍历332的数值变化为:332 -> 329 -> 299

确定了遍历顺序之后,那么此时局部最优就可以推出全局,找不出反例,试试贪心。

  • 时间复杂度:O(n),n 为数字长度
  • 空间复杂度:O(n),需要一个字符串,转化为字符串操作更方便

总结

本题只要想清楚个例,例如98,一旦出现strNum[i - 1] > strNum[i]的情况(非单调递增),首先想让strNum[i - 1]减一,strNum[i]赋值9,这样这个整数就是89。就可以很自然想到对应的贪心解法了。

想到了贪心,还要考虑遍历顺序,只有从后向前遍历才能重复利用上次比较的结果。

最后代码实现的时候,也需要一些技巧,例如用一个flag来标记从哪里开始赋值9。

class Solution {public int monotoneIncreasingDigits(int n) {String s = String.valueOf(n);char[] chars = s.toCharArray();int start = s.length();for(int i = s.length() - 2; i >= 0; i--){if(chars[i] > chars[i + 1]){chars[i]--;start = i+1;}}for(int i = start; i < s.length();i++){chars[i] = '9';}return Integer.parseInt(String.valueOf(chars));}
}

968.监控二叉树

总结

http://www.dinnco.com/news/13478.html

相关文章:

  • 门户网站的注意要素东莞做网络推广的公司
  • 青海网站开发公司百度实时热点排行榜
  • 网站栏目一般有哪些南昌网站设计
  • 国外获奖flash网站2021百度新算法优化
  • 做网站域名网站推广怎样做
  • 网页动态设计怎么做网站优化排名资源
  • 阳江做网站详细解读qq空间刷赞推广网站
  • 有发展的小企业网站建设今日国内新闻最新消息10条新闻
  • 网站关键词几个字百度推广登录地址
  • 专门做爬虫的网站武汉全网推广
  • ideo设计公司上海太原seo软件
  • 大气扁平网站网络优化包括
  • wordpress客户端建站网络营销推广策划的步骤
  • 学互联网做网站是什么seo内容优化是什么意思
  • 做网站一天能接多少单百度快照优化推广
  • 公安互联网站备案信息嘉兴seo排名外包
  • 怎样做打赏网站近期国内热点新闻事件
  • 做网站除了广告还有什么收入的网络推广的几种方式
  • 广东省建设部网站百度竞价排名规则
  • 南昌专业网站建设百度分析
  • 泰州网站开发公司济南优化网站关键词
  • 南京网站改版手机营销软件
  • 公司管理seo外链代发
  • 小公司做网站多少钱直通车推广怎么做
  • 杭州网站建设找思创网络免费开通网站
  • 动态背景设置网站工厂管理培训课程
  • 黑龙江公司网站开发seo这个职位是干什么的
  • 2021手机能看的网站广告公司名字
  • 济南360做网站电话seo搜索引擎专员
  • 兰州市政建设集团网站百度信息流账户搭建