Leetcode 山字形序列_正反掃描
合唱團問題:給定一組身高不同的人,刪除其中幾個人,使得剩下的人組成先升高後減少的合唱團佇列
思路:正、反掃描
- left[i]表示正向第i個人為末尾的最長遞增子序列
- right[i]表示反向第i個人為末尾的最長遞增子序列
計算left[i]+right[i]-1便可找到最大的合唱團佇列長度
題目描述
雲霄飛車在上坡下坡的過程是非常刺激的。如果把整個雲霄飛車的軌道當作是一個長度為n的陣列num,那麼在雲霄飛車上坡時陣列中的值是呈現遞增趨勢的,到了最高點以後,陣列中的值呈現遞減的趨勢,把符合這樣先增後減規律的陣列定義為金字塔陣列,請你幫牛牛在整個num陣列中找出長度最長的金字塔陣列,如果金字塔陣列不存在,請輸出0。
示例1
輸入
複製
4,[1,2,3,1]
輸出
複製
4
【思路】和合唱團類似,採取正、反向掃描
- left[i]表示從i位置向左組多可以連續遞減多少次
- right[i]表示從i位置向右最多可以連續遞減多少次
以left[]迭代計算為例:
- 若num[i]>num[i-1] 則left[i]=left[i-1]
- 否則,left[i]=0
峰頂法
最後,遍歷那些山峰(left[i]>0 && right[i]>0)的left[i]+right[i]+1 找到其中的最大值
整個時間複雜度為線性級別: O(N)
int getMaxLength(int n, vector<int>& num) {
// write code here
if(n==1)
return 1;
vector<int> left(n,0);//left[i]=k表示i位置向左可以下降多少元素
vector<int> right(n,0);//right[i]=k表示i位置向右可以下降多少元素
for(int i=1;i<n;i++)
if(num[i]>num[i-1])
left[i]=left[i-1]+1;
for(int i=n-2;i>=0;i--)
if(num[i]>num[i+1])
right[i]=right[i+1]+1;
int ans=0;
for(int i=0;i<n;i++)
{
if(left[i]>0 && right[i]>0)
ans=max(ans,left[i]+right[i]+1);
}
return ans;
}
另一種思路:峰谷法
尋找到那些峰谷(區域性最低點 num[i]<num[i-1] && num[i]<num[i+1])
兩兩峰谷之間的距離,即為中間波峰的長度
相關文章
- CCF第二題之Z字形掃描(只有90分555555)
- AWVS掃描器掃描web漏洞操作Web
- 全表掃描和全索引掃描索引
- 掃描器的存在、奧普 掃描器
- Leetcode——6. Z 字形變換LeetCode
- LeetCode 6.Z字形變換LeetCode
- win10系統掃描器提示掃描不到掃描器如何解決Win10
- 掃描器
- 掃描王 for Mac專業圖片掃描工具Mac
- 什麼是漏洞掃描?漏洞掃描功能有哪些?
- MySQL中的全表掃描和索引樹掃描MySql索引
- python掃描埠Python
- 目錄掃描
- 埠掃描器
- leetcode 掃描線專題 06-leetcode.252 meeting room 力扣.252 會議室LeetCodeOOM力扣
- leetcode 掃描線專題 06-leetcode.391 perfect-rectangle 力扣.391 完美矩形LeetCode力扣
- DAST 黑盒漏洞掃描器 第四篇:掃描效能AST
- 電腦掃描檔案怎麼掃描 win10電腦掃描檔案方法介紹Win10
- LeetCode6: ZigZag Conversion(Z字形變換)LeetCode
- leetcode 掃描線專題 06-leetcode.836 rectangle-overlap 力扣.836 矩形重疊LeetCode力扣
- 全表掃描和全索引掃描繼續(PG-TiDB)索引TiDB
- 京東掃描平臺EOS—JS掃描落地與實踐JS
- [20210220]全索引掃描快速索引掃描的邏輯讀.txt索引
- Zenmap(埠掃描工具)
- P2032 掃描
- direasch目錄掃描
- 淺談掃描線
- sonar(二)掃描配置
- 掃描行為分析
- 綜合掃描工具
- Nydus 映象掃描加速
- LeetCode-6. Z字形變換(找規律)LeetCode
- 模型欄位與序列化正反向查詢模型
- leetcode 陣列專題 06-掃描線演算法(Sweep Line Algorithm)LeetCode陣列演算法Go
- HDU 1542 Atlantis(掃描線)
- Spring 自動掃描元件Spring元件
- 【Oracle】 索引的掃描方式Oracle索引
- 淺談埠掃描原理