LeetCode-----456. 132模式

題目連接  https://leetcode-cn.com/problems/132-pattern/

給定一個整數序列:a1, a2, ..., an,一個132模式的子序列 ai, aj, ak 被定義爲:當 i < j < k 時,ai < ak < aj。設計一個算法,當給定有 n 個數字的序列時,驗證這個序列中是否含有132模式的子序列。

注意:n 的值小於15000。

示例1:

輸入: [1, 2, 3, 4]

輸出: False

解釋: 序列中不存在132模式的子序列。

示例 2:

輸入: [3, 1, 4, 2]

輸出: True

解釋: 序列中有 1 個132模式的子序列: [1, 4, 2].

想好算法再下筆!

class Solution {
	public:

		bool find132pattern(vector<int>& nums) {
			int n=nums.size();
			if(n<=2) return false;
			vector<int> imina(n);
			imina[0]=nums[0];
			for(int i=1; i<n; i++) {
				imina[i]=min(imina[i-1],nums[i]);
			}

			for(int i=1; i<n-1; i++) {
				if(nums[i]>imina[i-1])
					for(int j=i+1; j<n; j++)
						if(nums[i]>nums[j]&&nums[j]>imina[i-1]) {
							cout<<i<<endl;
							return true;
						}
			}
			return false;
		}
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章