给定未排序的数组,返回是否在数组中存在递增的长度为3的子序列。
完整的功能应为:
如果存在i, j, k,使得arr[i] < arr[j] < arr[k],且0 ≤ i < j < k ≤ n-1,则返回true,否则返回false。
您的算法应该以O(n)时间复杂度和O(1)空间复杂度运行。
样例
样例1
输入: [1, 2, 3, 4, 5]
输出: true
样例2
输入: [5, 4, 3, 2, 1]
输出: false
class Solution {
public:
/**
* @param nums: a list of integers
* @return: return a boolean
*/
bool increasingTriplet(vector<int> &nums)
{
// write your code
for(int i = 0; i < nums.size(); i++)
{
if(i > 0 && nums[i] == nums[i-1])
continue;
int l = i + 1;
int r = nums.size() - 1;
while(l < r)
{
if(nums[i] < nums[r])
{
if(nums[l] > nums[i] && nums[r] > nums[l])
{
return true;
}
else
{
l++;
}
}
else
break;
}
}
return false;
}
};