首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
递增数组
[编程题]递增数组
热度指数:3427
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 256M,其他语言512M
算法知识视频讲解
牛牛有一个数组array,牛牛可以每次选择一个连续的区间,让区间的数都加1,他想知道把这个数组变为严格单调递增,最少需要操作多少次?
示例1
输入
[1,2,1]
输出
2
说明
把第三个数字+2可以构成1,2,3
备注:
马上挑战
算法知识视频讲解
提交运行
算法知识视频讲解
添加笔记
求解答(9)
邀请回答
收藏(21)
分享
纠错
提交结果有问题?
12个回答
8篇题解
开通博客
Tag_Kausal
发表于 2020-02-13 17:28:52
因为我们要求得一个单调递增的序列,那么我们如果要选择一个区间的话这个区间必为后缀,不然我们选择一个中间的区间相当于把中间提高了,那么对后面就造成了不利的影响。所以我们只需要看每一个位置i与后面的一个元素i+1的差,位置i的贡献为max(0,array[i]+1-array[i+1])。时间复杂度O(
展开全文
未来0116
发表于 2021-08-04 21:55:10
一.题目描述NC531递增数值牛牛有一个数组array,牛牛可以每次选择一个连续的区间,让区间的数都加1,他想知道把这个数组变为严格单调递增,最少需要操作多少次?二.算法(贪心)基于贪心的思想,对于已经递增的区间我们不应该去处理,为了减少后面的操作次数,所以对于整个数组我们需要进行一次遍历,只需要处
展开全文
小兄弟加油啊
发表于 2021-10-29 10:38:01
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型vector array * @return long长
展开全文
球球了给孩子一个offer吧
发表于 2021-08-07 10:52:46
题目描述:牛牛有一个数组array,牛牛可以每次选择一个连续的区间,让区间的数都加1,他想知道把这个数组变为严格单调递增,最少需要操作多少次?关键点:每次选择一个连续的区间,区间的数一次性加1数组元素必须严格单调递增,不能出现元素相等的情况 方法一:贪心要使得整个数组严格单调递增,就需要数组中每个局
展开全文
馒头2020
发表于 2021-01-26 11:24:28
题目描述 牛牛有一个数组array,牛牛可以每次选择一个连续的区间,让区间的数都加1,他想知道把这个数组变为严格单调递增,最少需要操作多少次? 示例 输入 [1,2,1] 返回值 2 说明 把第三个数字+2可以构成1,2,3 解题思路 使用贪心算法。遍历数组 arr[len] ,第 i 次区间为 [
展开全文
摸鱼学大师
发表于 2021-08-05 13:01:07
思路: 题目的主要信息: 给定一个数组,每次操作选择数组中一个区间的所有数字加1 使区间严格单调递增最少需要多少次操作 因为要严格单调递增,所以前一个数一定比后一个数字大,我们假设,那么我们只需要给即可严格大于,但是后面的数字因为的增加,需要严格单调也可能会要增加操作,刚好我们可以选择一个区间,
展开全文
认认真真coding
发表于 2021-08-08 16:16:13
题目描述牛牛有一个数组array,牛牛可以每次选择一个连续的区间,让区间的数都加1,他想知道把这个数组变为严格单调递增,最少需要操作多少次? 方法一:贪心思想求解 求解思路对于本题目要求整个数组为严格单调递增数组,那么数组的局部肯定都是递增的,否则这个数组不是递增数组。我们对数组的递减部分进行处理,
展开全文
不会做题的小菜鸡
发表于 2021-09-15 15:10:36
思路 题目分析 给出了一个数组,我们要将其变为严格单调递增的数组。 我们可以采取的方式是:选定某个子区间的所有数字同时进行+1操作 最终返回我们处理的次数 直观上,当我们发现array[i] >= array[i+1]的时候,需要将array[i+1]进行+1操作,使其比前一项大 但
展开全文
问题信息
贪心
数组
难度:
12条回答
21收藏
6278浏览
热门推荐
通过挑战的用户
查看代码
chenjia...
2022-12-02 01:51:10
牛客24718...
2022-08-24 22:18:30
牛客15855...
2022-06-10 17:32:10
古拉格
2022-05-09 12:39:07
想要offer...
2022-05-07 11:54:21
相关试题
下面使用贪心算法的是?
阿里巴巴
贪心
评论
(1)
求序列里最长的非降序列 例如:输...
百度
贪心
评论
(12)
执行以下程序,理论上输出的结果应最...
360集团
Python
算法工程师
2019
评论
(1)
来自
360公司-2019校招...
计算分类模型的性能指标
机器学习
评论
(0)
实现 k-Means 聚类算法
机器学习
评论
(1)
递增数组
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型一维数组 array * @return long长整型 */ public long IncreasingArray (int[] array) { // write code here } }
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型vector array * @return long长整型 */ long long IncreasingArray(vector
& array) { // write code here } };
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param array int整型一维数组 array # @return long长整型 # class Solution: def IncreasingArray(self , array ): # write code here
using System; using System.Collections.Generic; class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型一维数组 array * @return long长整型 */ public long IncreasingArray (List
array) { // write code here } }
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型一维数组 array * @return long长整型 */ function IncreasingArray( array ) { // write code here } module.exports = { IncreasingArray : IncreasingArray };
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param array int整型一维数组 array # @return long长整型 # class Solution: def IncreasingArray(self , array ): # write code here
package main /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型一维数组 array * @return long长整型 */ func IncreasingArray( array []int ) int64 { // write code here }
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型一维数组 array * @param arrayLen int array数组长度 * @return long长整型 */ long long IncreasingArray(int* array, int arrayLen ) { // write code here }
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param array int整型一维数组 array # @return long长整型 # class Solution def IncreasingArray(array) # write code here end end
object Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型一维数组 array * @return long长整型 */ def IncreasingArray(array: Array[Int]): Long = { // write code here } }
object Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型一维数组 array * @return long长整型 */ fun IncreasingArray(array: IntArray): Long { // write code here } }
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型一维数组 array * @return long长整型 */ public long IncreasingArray (int[] array) { // write code here } }
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型一维数组 array * @return long长整型 */ export function IncreasingArray(array: number[]): number { // write code here }
public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型一维数组 array * @return long长整型 */ func IncreasingArray ( _ array: [Int]) -> Int64 { // write code here } }
struct Solution{ } impl Solution { fn new() -> Self { Solution{} } /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型一维数组 array * @return long长整型 */ pub fn IncreasingArray(&self, array: Vec
) -> i64 { // write code here } }
[1,2,1]
2