日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode 1671. 得到山形数组的最少删除次数(最长上升子序DP nlogn)

發布時間:2024/7/5 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 1671. 得到山形数组的最少删除次数(最长上升子序DP nlogn) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1. 題目
    • 2. 解題
      • 2.1 n^2 解法
      • 2.2 nlogn 解法


197 / 1891,前10.4%

435 / 6154,前7.07%

前三題如下:

LeetCode 5557. 最大重復子字符串
LeetCode 5558. 合并兩個鏈表
LeetCode 5560. 設計前中后隊列(deque)

1. 題目

我們定義 arr 是 山形數組 當且僅當它滿足:

  • arr.length >= 3
  • 存在某個下標 i (從 0 開始) 滿足 0 < i < arr.length - 1 且:
arr[0] < arr[1] < ... < arr[i - 1] < arr[i] 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 解釋:一種方法是將下標為 015 的元素刪除,剩余元素為 [1,5,6,3,1] ,是山形數組。示例 3: 輸入:nums = [4,3,2,1,1,2,3,1] 輸出:4示例 4: 輸入:nums = [1,2,3,4,4,3,2,1] 輸出:1提示: 3 <= nums.length <= 1000 1 <= nums[i] <= 10^9 題目保證 nums 刪除一些元素后一定能得到山形數組。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/minimum-number-of-removals-to-make-mountain-array
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。

2. 解題

可以參考:

動態規劃應用–最長遞增子序列 LeetCode 300

  • 計算每個位置處的最長上升子序長度
  • 正反雙向計算2次
  • 然后遍歷每個位置,計算 min(n?l1?l2+1)min(n-l1-l2+1)min(n?l1?l2+1)

2.1 n^2 解法

class Solution { public:int minimumMountainRemovals(vector<int>& nums) {int n = nums.size();vector<int> dp1(n, 1), dp2(n, 1);for(int i = 1; i < n; ++i){for(int j = i-1; j >= 0; --j){if(nums[j] < nums[i])dp1[i] = max(dp1[i], dp1[j]+1);}}for(int i = n-2; i >= 0; --i){for(int j = i+1; j < n; ++j){if(nums[j] < nums[i])dp2[i] = max(dp2[i], dp2[j]+1);}}int ans = INT_MAX;for(int i = 1; i < n-1; ++i){if(dp1[i]>1 && dp2[i]>1)ans = min(ans, n-(dp1[i]+dp2[i]-1));}return ans;} };

444 ms 12.2 MB C++

2.2 nlogn 解法

參考評論區:Zhenghao-Liu

采用了二分查找的方法,直接找到當前數字該插入的位置

直接復制過來Zhenghao-Liu大佬的代碼,如下:

const int MAXN=1000; int l2r[MAXN]; int r2l[MAXN]; const int INF=0x3f3f3f3f; class Solution { public:int minimumMountainRemovals(vector<int>& nums) {int size=nums.size();memset(l2r,0x3f,sizeof(l2r));memset(r2l,0x3f,sizeof(r2l));vector<int> vec;vec.reserve(size);for (int i=0;i<size;++i){int cur=nums.at(i);auto pos=lower_bound(vec.begin(),vec.end(),cur);if (pos==vec.end())vec.push_back(cur);else*pos=cur;l2r[i]=vec.size();}vec.clear();for (int i=size-1;i>=0;--i){int cur=nums.at(i);auto pos=lower_bound(vec.begin(),vec.end(),cur);if (pos==vec.end())vec.push_back(cur);else*pos=cur;r2l[i]=vec.size();}int ans=INF;for (int i=1;i<size-1;++i){int l=l2r[i];int r=r2l[i];if (l>1 && r>1)ans=min(ans,size-(l+r-1));}return ans;} };

56 ms 11.9 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!

總結

以上是生活随笔為你收集整理的LeetCode 1671. 得到山形数组的最少删除次数(最长上升子序DP nlogn)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 182tv福利视频 | 91精品啪| 羞羞色视频 | 中文字幕在线观看91 | 欧美色综合 | аⅴ资源新版在线天堂 | 狠狠干少妇 | 国产91对白在线播放 | 欧美一区二区三区免费在线观看 | 伊人免费在线观看高清版 | 99情趣网| 国内偷拍一区二区 | 午夜dv内射一区二区 | 成人久久网站 | 欧美久久久久久久久中文字幕 | 国产黄色大片在线观看 | 久久久中文字幕 | free性中国hd国语露脸 | 国产日韩精品在线观看 | 成人深夜在线 | 国产网站在线看 | 老头吃奶性行交 | 性色av蜜臀av色欲av | 精品美女视频 | 丝袜老师办公室里做好紧好爽 | av中出在线 | 国产精品2区| 国产美女www爽爽爽 www.国产毛片 | 欧美成人亚洲 | 亚洲男人第一网站 | 日韩久久不卡 | 三年中国片在线高清观看 | 最近中文字幕在线观看 | 国产极品免费 | www.国产精品 | 在线成人中文字幕 | 伊人久久久久久久久久久久 | 日韩精品一二三 | 亚洲天堂福利视频 | 在线观看污视频网站 | 欧美日韩亚 | 中文字幕二区 | 神马久久av| 国产精品一级视频 | 91喷水视频 | 国产福利免费视频 | 成年人视频免费在线观看 | 欧美一区二区三区公司 | 图书馆的女友在线观看 | 激情五月激情 | 91偷拍富婆spa盗摄在线 | 一区小视频 | 男人天堂2014 | 天天干天天舔天天操 | 啪啪中文字幕 | 亚洲午夜视频在线观看 | 91精品一区二区三 | aa一级黄色片| 99热免费在线观看 | 黄色小视频入口 | 114国产精品久久免费观看 | 亚洲精品字幕在线观看 | 黄色一级大片在线免费看国产一 | 国产精品对白 | 日本成人一区二区三区 | 中文字幕av免费在线观看 | 成人综合在线观看 | 精品国产一区二区三区噜噜噜 | 国产精品亚洲视频 | 国内一级黄色片 | 日日夜夜操操操 | 黄色国产一级 | 野花av | 日韩a级大片 | 中文字幕高清在线 | 91丨国产丨捆绑调教 | 激情婷 | 美女娇喘 | 亚洲中文字幕无码av永久 | 在线视频这里只有精品 | 红猫大本营在线观看的 | 91l九色lporny | 日韩一区二区三区精品视频 | 成人网在线免费观看 | 99在线观看免费视频 | 欧美日韩精 | 大乳女喂男人吃奶 | 国产成人av免费 | 久久精品波多野结衣 | 99热精品在线播放 | 男女视频免费观看 | av毛片在线看 | 久久午夜影院 | 久久久久噜噜噜亚洲熟女综合 | 成人爱爱| 亚洲日日夜夜 | 欧美情趣视频 | 亚洲精品1 | 中文字幕在线观看的网站 |