1.题目给你一个非负整数数组 nums ,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。假设你总是可以到达数组的最后一个位置。 示例1:输入:nums=[2,3,1,1,4]输出:2解释:跳到最后一个位置的最小跳跃数是2。 从下标为0跳到下标为1的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。示例2:输入:nums=[2,3,0,1,4]输出:2 提示:1402.题目分析 这是一道动态规划的题目,思路求解和跳跃游戏1类似,只不过现在题目假设从起点都能到终点,找从起点到终点的最小跳数。 设dp[i]
1.题目给你一个非负整数数组 nums ,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。假设你总是可以到达数组的最后一个位置。 示例1:输入:nums=[2,3,1,1,4]输出:2解释:跳到最后一个位置的最小跳跃数是2。 从下标为0跳到下标为1的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。示例2:输入:nums=[2,3,0,1,4]输出:2 提示:1402.题目分析 这是一道动态规划的题目,思路求解和跳跃游戏1类似,只不过现在题目假设从起点都能到终点,找从起点到终点的最小跳数。 设dp[i]
题意给你两个数l,m,大小为m的数组a,求[0,l]之间满足以下条件的数x的个数:对于任何i输入[0,m-1],f(x+i)%2=a[i];f(k):代表k在二进制下1的个数m的范围思路显然l的范围1e18,大概率就是数位DP了观察到m是那么只要对前半部分进行数位DP,dp[pos][lim][cnt][d]代表位置在pos处,lim代表有无达到上限,cnt为1代表前面有奇数个1为0代表偶数个1,d代表从pos起向前有偶数还是奇数个1;对于第七位以后的部分,直接暴力计算就好了,统计一下是否进位;代码#includeusingnamespacestd;#defineintlonglonginta
题意给你两个数l,m,大小为m的数组a,求[0,l]之间满足以下条件的数x的个数:对于任何i输入[0,m-1],f(x+i)%2=a[i];f(k):代表k在二进制下1的个数m的范围思路显然l的范围1e18,大概率就是数位DP了观察到m是那么只要对前半部分进行数位DP,dp[pos][lim][cnt][d]代表位置在pos处,lim代表有无达到上限,cnt为1代表前面有奇数个1为0代表偶数个1,d代表从pos起向前有偶数还是奇数个1;对于第七位以后的部分,直接暴力计算就好了,统计一下是否进位;代码#includeusingnamespacestd;#defineintlonglonginta
12|为什么我的MySQL会“抖”一下?一条SQL语句,正常执行的时候特别快,但是有时也不知道怎么回事,它就会变得特别慢,并且这样的场景很难复现,它不只随机,而且持续时间还很短。你的SQL语句为什么变“慢”了内存里的数据写入磁盘的过程,叫做flush。在这个flush操作执行之前,内存里的数据和磁盘里的是不一致的。当内存数据页跟磁盘数据页内容不一致的时候,我们称这个内存页为“脏页”。内存数据写入到磁盘后,内存和磁盘上的数据页的内容就一致了,称为“干净页”。平时执行很快的更新操作,其实就是在写内存和日志,而MySQL偶尔“抖”一下的那个瞬间,可能就是在刷脏页(flush)什么情况会引发数据库的f
12|为什么我的MySQL会“抖”一下?一条SQL语句,正常执行的时候特别快,但是有时也不知道怎么回事,它就会变得特别慢,并且这样的场景很难复现,它不只随机,而且持续时间还很短。你的SQL语句为什么变“慢”了内存里的数据写入磁盘的过程,叫做flush。在这个flush操作执行之前,内存里的数据和磁盘里的是不一致的。当内存数据页跟磁盘数据页内容不一致的时候,我们称这个内存页为“脏页”。内存数据写入到磁盘后,内存和磁盘上的数据页的内容就一致了,称为“干净页”。平时执行很快的更新操作,其实就是在写内存和日志,而MySQL偶尔“抖”一下的那个瞬间,可能就是在刷脏页(flush)什么情况会引发数据库的f
19|为什么我只查一行的语句,也执行这么慢?有些情况下,“查一行”,也会执行得特别慢。需要说明的是,如果MySQL数据库本身就有很大的压力,导致数据库服务器CPU占用率很高或ioutil(IO利用率)很高,这种情况下所有语句的执行都有可能变慢,不属于本章讨论范围。为了便于描述,构造一个表,基于这个表来说明问题。这个表有两个字段id和c,并且在里面插入了10万行记录。CREATETABLE`t`(`id`int(11)NOTNULL,`c`int(11)DEFAULTNULL,PRIMARYKEY(`id`))ENGINE=InnoDB;delimiter;;createprocedureida
19|为什么我只查一行的语句,也执行这么慢?有些情况下,“查一行”,也会执行得特别慢。需要说明的是,如果MySQL数据库本身就有很大的压力,导致数据库服务器CPU占用率很高或ioutil(IO利用率)很高,这种情况下所有语句的执行都有可能变慢,不属于本章讨论范围。为了便于描述,构造一个表,基于这个表来说明问题。这个表有两个字段id和c,并且在里面插入了10万行记录。CREATETABLE`t`(`id`int(11)NOTNULL,`c`int(11)DEFAULTNULL,PRIMARYKEY(`id`))ENGINE=InnoDB;delimiter;;createprocedureida
14|count(*)这么慢,我该怎么办?在开发系统的时候,你可能经常需要计算一个表的行数,比如一个交易系统的所有变更记录总数。随着系统中记录数越来越多,selectcount(*)fromt语句执行得也会越来越慢count(*)的实现方式在不同的MySQL引擎中,count(*)有不同的实现方式。MyISAM引擎把一个表的总行数存在了磁盘上,因此执行count(*)的时候会直接返回这个数,效率很高;而InnoDB引擎执行count(*)的时候,需要把数据一行一行地从引擎里面读出来,然后累积计数。这里讨论的是没有过滤条件的count(*),如果加了where条件的话,MyISAM表也是不能返回
14|count(*)这么慢,我该怎么办?在开发系统的时候,你可能经常需要计算一个表的行数,比如一个交易系统的所有变更记录总数。随着系统中记录数越来越多,selectcount(*)fromt语句执行得也会越来越慢count(*)的实现方式在不同的MySQL引擎中,count(*)有不同的实现方式。MyISAM引擎把一个表的总行数存在了磁盘上,因此执行count(*)的时候会直接返回这个数,效率很高;而InnoDB引擎执行count(*)的时候,需要把数据一行一行地从引擎里面读出来,然后累积计数。这里讨论的是没有过滤条件的count(*),如果加了where条件的话,MyISAM表也是不能返回