给你一个整数数列a1,a2,a3,...,an,请你修改(不能删除,只能修改)最少的数字,使得数列严格单调递增。
数列存储在列表L中,你可以直接使用L,L的长度小于100000。
注意:必须保证修改后的数列依然是整数序列,不能修改成小数。
例如:L=[1,3,2],则输出1

这个题目呢,就是去找一个最长递增的子序列(就是不用去修改的最大个数),且这个子序需要满足一个条件就是两个元素之间的差值要比它们在数组L中的位置的下标差值要大,因为只有这样它们之间的元素才可以通过变化,成严格的递增的序列 =的,然后將我们数组的长度去减去这个最长递增的子序列的长度就是答案了。

举个例子说明,我们有一个[1,5,6,3,4,5,2,7,8]的序列,我们找到了它的最长子序列应该是[3,4,5,7,8],这个子序列的值在原数组中保持不变,而其他数据也就可以通过修改变成严格递增的

怎么找这个序列呢,我们可以直接找一个数组的最大子序列的大小就可以了,利用动态规划,取M[i]表示以L[i]结尾的最大子序列的大小,我们有它的大小应该是在1(自己成立一个新的序列)或是它的前面的

的最大子序列的中满足条件的最大值,条件呢就是要满足元素之差大于元素下标之差,也就是{ M[i] = max{M[:j]} + 1, L[i] - L[k] >= i - k, k表示遍历M的下标}

代码如下

def dp(L):
size = len(L)
rsl = [0] * size
rsl[0] = 1
for i in range(1, size):
for j in range(i):
if L[i] - L[j] >= i - j and rsl[i] < rsl[j] + 1: # 动态规划得到结果
rsl[i] = rsl[j] + 1
if rsl[i] == 0: # 如果没有满足条件的,自成一个序列
rsl[i] = 1 return max(rsl) L = [1,5,6,3,4,5,2,7,8]
print(len(L) - dp(L))

python 小练习12的更多相关文章

  1. python小练习(自己瞎倒腾)

    python小练习 在网上无意中看到一个问题,心血来潮写了写,觉得比较有意思,以后遇到这种有意思的小练习也记录下. #!/usr/bin/env python # -*- coding:utf-8 - ...

  2. python入门(12)dict

    python入门(12)dict Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度. 举个例 ...

  3. 小学生都能学会的python(小数据池)

    小学生都能学会的python(小数据池) 1. 小数据池. 目的:缓存我们字符串,整数,布尔值.在使用的时候不需要创建过多的对象 缓存:int, str, bool. int: 缓存范围 -5~256 ...

  4. 这42个Python小例子,太走心

    告别枯燥,60秒学会一个Python小例子.奔着此出发点,我在过去1个月,将平时经常使用的代码段换为小例子,分享出来后受到大家的喜欢. 一.基本操作 1 链式比较 i = 3print(1 <  ...

  5. Python小技巧整理

    一.python小工具: 1.内置下载和网站: 进入相应目录:2.x python -m SimpleHTTPServer 3.x python -m http.server 2.字符串转换为JSON ...

  6. 【转】Centos升级Python 2.7.12并安装pip、ipython

    Centos系统一般默认就安装有Python2.6.6版本,不少软件需要2.7以上的,通过包管理工具安装不了最新的版本,通过源码编译可以方便安装指定版本,只需要把下面版本的数字换成你想要的版本号. 1 ...

  7. Python小工具--删除svn文件

    有的时候我们需要删除项目下的svn相关文件,但是SVN会在所有的目录下都创建隐藏文件.svn,手工一个个目录查找然后删除显然比较麻烦.所以这里提供了一个Python小工具用于批量删除svn的相关文件: ...

  8. python小练习之二

    title: python小练习之二 tags: 新建,模板,小书匠 grammar_cjkRuby: true --- python小练习之二 需求:实现用户登录,用户名和密码保存到文件里,连续输入 ...

  9. Python小代码_2_格式化输出

    Python小代码_2_格式化输出 name = input("name:") age = input("age:") job = input("jo ...

随机推荐

  1. Python3 pip出现Fatal error in launcher: Unable to create process using '"'

    Python3 pip出现Fatal error in launcher: Unable to create process using '"' 问题分析: 先python2又安装了pyth ...

  2. rabbitmq架构简介(包括集群)

    总的来说,rabbitmq使用erlang语言编写,其架构类似于servlet容器运行servlet应用,底层是erlang VM.然后是erlang节点,上面是应用.如下所示: 每个MQ中运行的应用 ...

  3. kafka调试遇到的问题

    在三台机器上以不同的端口部署了三个kafka和zookeeper实例,对应三套环境. 如: zk1:2181 zk2:2182 zk3:2183 kafka1:9092 kafka2:9093 kaf ...

  4. 03: KindEditor (HTML可视化编辑器)

    目录: 1.1 kindEditor常用配置参数 1.2 kindEditor下载与文件说明 1.3 kindEditor实现上传图片.文件.及文件空间管理 1.1 kindEditor常用配置参数返 ...

  5. 20145301赵嘉鑫《网络对抗》Exp8 Web基础

    20145301赵嘉鑫<网络对抗>Exp8 Web基础 基础问题回答 什么是表单? 表单是一个包含表单元素的区域,主要负责数据采集部分.表单元素允许用户在表单中输入信息.一个表单有三个基本 ...

  6. 微信小程序——2、配置json文件

    配置文件详解 主配置文件app.json 主配置文件位于主目录中,用于进行全局配置.包括页面文件的路径.窗口表现.设置网络超时时间.设置多tab等 下面通过微信最初自带小程序来学习 { "p ...

  7. 关于Qt跨线程调用IO子类的理解

    一.疑问 突然想到,类似于QTcpsocket和QSerialport这类对象,如果是在A线程中new的,那就不能在其他线程中访问.我一般是这样做的: 封装一个QObject子类,放这些对象进去,然后 ...

  8. CMD运行后关闭CMD 的窗口命令

    在命令前加上Start 例(打开服务管理):start services.msc

  9. Python3基础 str endswith 是否以指定字符串结束

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  10. json封装数据,然后通过创造的标签调用

    <ul class="list"> <li></li> <li></li> <li></li> ...