博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode]Increasing Triplet Subsequence
阅读量:5936 次
发布时间:2019-06-19

本文共 1654 字,大约阅读时间需要 5 分钟。

题目:Increasing Triplet Subsequence

Given an unsorted array return whether an increasing subsequence of length 3 exists or not in the array.

Formally the function should:

Return true if there exists 
i, j, k 
such that 
arr[i] < 
arr[j] < 
arr[k] given 0 ≤ 
i < 
j < 
k ≤ 
n-1 else return false.

Your algorithm should run in O(n) time complexity and O(1) space complexity.

Examples:

Given [1, 2, 3, 4, 5],
return true.

Given [5, 4, 3, 2, 1],

return false.

题目:给定一个数组中找到是否有长度为3的递增序列,是返回true。

注意:序列只需要递增不一定需要连续。

也就是说只需要在下标递增的情况下,找到三个逐渐增大的数即可。

思路:

因为只需要找三个数,所以简单思考,只需要记住两个递增的数,然后遇到第三个数,该数大于这两个数就可以了。

同时不忘了,当遇到较小的数的时候适当更新前两个数。那么什么时候更新前两个数呢?

方便描述,我假设3个递增的数中最小的是smaller,中间的是larger,最大的是max。

初始化,smaller=A[0],larger=INT_MAX;

当遇到smaller< N <larger的数时,就要更新larger=N;

当遇到N<smaller的数时,就要更新smaller=N;这样才能进一步更新larger,此时还没有更新larger,如果N不是有效的结果由于最终只比较larger来得出判断结果,所以也没有影响。

当遇到N>larger时,就得出true的结果,直接返回。

 

/*F(i)表示i处的升序的长度F(i) = max{nums[i] > nums[j] + F(j)}但是由于只需要判断长度为3的增序子序列,所以,只需要记录前面的最小值smaller,和增序长度为2的最小值larger就可以知道当前元素的增序子序列长度。当当前元素cur > larger时,长度变为3,即存在长度为3的增序子序列;当cur < larger时,又分为cur > smaller时,当前元素的长度是2,且更新larger;或cur < smaller时,当前元素长度为1,且更新smaller;*/bool LeetCode::increasingTriplet(vector
& nums){ if (nums.size() < 3)return false; //length记录增序子序列长度,smaller记录直到当前位置的最小值,larger记录length=1时的最小值 int length = 0, smaller = nums[0], larger = INT_MAX; for (size_t i = 1; i < nums.size(); ++i){ if (nums[i] > larger)return true;//存在 else if (nums[i] < larger){ if (nums[i] > smaller){ larger = nums[i];//更新larger length = 1;//长度为1 } else smaller = nums[i];//更新smaller } } return false;}

  

转载于:https://www.cnblogs.com/yeqluofwupheng/p/7045160.html

你可能感兴趣的文章
从零开始来看一下Java泛型的设计
查看>>
Shell编程基础
查看>>
Shell之Sed常用用法
查看>>
3.1
查看>>
校验表单如何摆脱 if else ?
查看>>
JS敏感信息泄露:不容忽视的WEB漏洞
查看>>
让我们荡起双桨,Android 小船波浪动画
查看>>
分布式memcached服务器代理magent安装配置(CentOS6.6)
查看>>
Create Volume 操作(Part III) - 每天5分钟玩转 OpenStack(52)
查看>>
tomcat 8.0虚拟机配置文档
查看>>
轻松实现基于Heartbeat的高可用web服务集群
查看>>
pxc群集搭建
查看>>
JS中加载cssText延时
查看>>
常用的脚本编程知识点
查看>>
XILINX_zynq_详解(6)
查看>>
计算机网络术语总结4
查看>>
新手小白 python之路 Day3 (string 常用方法)
查看>>
soapUI的简单使用(webservice接口功能测试)
查看>>
框架 Hibernate
查看>>
python-while循环
查看>>