Leetcode 1671 获取山阵列的最小删除次数

小夏 科技 更新 2024-01-29

当且仅当 arr 满足以下条件时,我们将 arr 定义为山峰阵列:

arr.length >= 3

有一个下标 i(从 0 开始),满足 0 < i < arr长度 - 1 和:

arr[0] arr[i] >arr[i + 1] >arr[arr.length - 1]

给定一个整数数组 nums,请返回将 nums 删除到山形数组中的最小次数。

示例 1:输入:nums = [1,3,1]。

输出:0 解释:数组本身是一个山峰数组,所以我们不需要删除任何元素。

示例 2:输入:nums = [2,1,1,5,6,2,3,1]。

输出:3 解释:一种方法是去掉下标为 0,1 和 5 的元素,剩下的元素是 [1,5,6,3,1],即山数组。

示例 3:输入:nums = [4,3,2,1,1,2,3,1]。

输出:4 个提示:

输入:nums = [1,2,3,4,4,3,2,1]。

输出: 1 提示:

3 <= nums.length <= 1000

1 <= nums[i] <= 109

该问题保证了 nums 在删除某些元素后将获得山阵列。

最长的升序子序列查看数据范围3 <= nums.length <= 1000。鲁莽也没问题。

这个问题要求你了解最长的升序子序列。

有了这样的知识前提,我们就可以列举出所有的山顶。 所以。

左侧需要删除的项目数实际上是 l - lis left,其中 l 是左侧的长度,lis left 是左侧最长的升序子序列的长度。 右侧需要删除的项目数量实际上是 r - lds right,其中 r 是右侧的长度,lds right 是右侧最长的降序子序列的长度。 为了统一逻辑最长的升序子序列长度,我们可以将 R 翻转一次。

枚举峰会的时间复杂度为 $o(n)$,常规 LIS 复杂度为 $o(n2)$。

基于时间复杂度的备忘单:

时间复杂度备忘单可以在我的刷牙插件中找到。 刷牙插件可以在我的***力扣加加“回复插件中获得。

此问题的数据范围为 < = 1000。 因此,$n 3$ 不能传递。 但是,我们可以使用贪婪的 lis,它的时间复杂度为 $n 2logn$,这几乎是勉强通过的。 关于贪婪的解决方案,在上面的文章中也提到了。

* 支持:python3

python3 code:

class solution: def minimummountainremovals(self, nums: list[int]) int: n = len(nums) ans = n def lis(a): d = for a in a: i = bisect.如果我< len(d),则将 left(d, a) 平分:d[i] = a elif 而不是 d 或 d[-1],因此 n 是数组的长度。 

时间复杂度:$o(n 2logn)$Space复杂度:$o(n)$

相似文章

    Leetcode 2009 使数组具有最少的操作数

    给你一个整数 nums 数组。在每个操作中,您都可以将 nums 中的任何元素替换为任意整数。如果 Nums 满足以下条件,则它是连续的 nums 中的所有元素彼此不同。nums 中最大元素和最小元素之间的差值等于 numslength 例如,nums ,,, 是连续的,但 nums ,,,, 不是...

    LeetCode 32 个最长的有效括号

    仅给定一个收容 跟 以查找包含有效括号的最长子字符串的长度。示例 输入 输出 解释 最长的有效括号子字符串是 示例 输入 输出 解释 最长的有效括号子字符串是 对阿里巴巴腾讯字节进行动态编程的直观方法是分别计算以 i 开头的最长有效括号 i 从 到 n 并从中取最大的括号。支持 Python 类解决...

    LeetCode39 组合和

    image.PNG 问题地址 组合和 LeetCode 给你没有重复的元素整数数组candidates和目标整数target找出答案candidates您可以制作目标的数量和数量target在所有不同的组合并以列表形式返回。您可以按 以任何顺序返回这些组合。candidates相同数字可以选择无限重...

    歼-16拦截了外国飞机,在对手与歼-16战斗了5分钟后,他肆无忌惮地发射干扰炸弹

    近年来,我国军事经济发展十分显著,所谓 民心人心 我国也因发展成就而引起以美国为首的西方国家的羡慕,因此近年来许多国家对我国进行了挑衅行为,包括但不限于在我国境内进行武装挑衅。非常猖獗的是,我国的歼 曾经拦截了一架外国飞机,对方与歼 战斗了五分钟后,竟然发射了 干扰炸弹。那么到底发生了什么?让我们先...

    海尔的16升燃气热水器和美的的16升燃气热水器有什么区别?

    热水器是我们日常生活中不可缺少的家用设备,它们为我们提供了温暖舒适的热水,满足我们洗澡和洗涤的需要。海尔和美的都是知名家电品牌,旗下 天然气热水器备受青睐。两款热水器都有自己的特点和功能,为用户提供便捷的热水体验。让我们仔细看看它们的功能 特点和用户口碑,为您提供全面的选择参考。.海尔L燃气热水器天...