Leetcode 1671 獲取山陣列的最小刪除次數

Mondo 科技 更新 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燃氣熱水...