334. 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.

Credits:
Special thanks to @DjangoUnchained for adding this problem and creating all test cases.

Subscribe to see which companies asked this question

这道题要求一个没有排序的数组中是否有3个数字满足前后递增的关系。最简单的办法是动态规划,设置一个数组dp,dp[i]表示在i位置之前小于或者等于数字nums[i]的数字的个数。我们首先将数组dp的每个元素初始化成1.然后开始遍历数组,对当前的数字nums[i],如果存在nums[j]<nums[i] (j<i),那么更新dp[i]=max(dp[i],dp[j]+1).如果在更新dp[i]之后,dp[i]的值为3了,那么就返回true,否则返回false。

代码如下:

  1. class Solution {
  2. public:
  3. bool increasingTriplet(vector<int>& nums) {
  4. vector<int> dp(nums.size(),1);
  5. for(int i=0;i<nums.size();i++){
  6. for(int j=0;j<i;j++){
  7. if(nums[j]<nums[i]){
  8. dp[i]=max(dp[i],dp[j]+1);
  9. if(dp[i]==3){
  10. return true;
  11. }
  12. }
  13. }
  14. }
  15. return false;
  16. }
  17. };
上述代码不满足题目要求的时间复杂度和空间复杂度。另一种思路是遍历数组,维护一个第一小值min1与第二小值min2,遍历数组,如果nums[i]<=min1,用nums[i]更新min1,否则如果nums[i]<=min2,用nums[i]更新min2,否则只可能nums[i]同时大于min1与min2,那么说明该数组中能找到长度为3的递增子数组,返回true。如果一直没有返回,说明不能找到,直接在最后返回false。
  1. class Solution {
  2. public:
  3. bool increasingTriplet(vector<int>& nums) {
  4. int min1=INT_MAX;
  5. int min2=INT_MAX;
  6. for(auto a:nums){
  7. if(a<=min1)
  8. min1=a;
  9. else if(a<=min2)
  10. min2=a;
  11. else
  12. return true;
  13. }
  14. return false;
  15. }
  16. };


 



来自为知笔记(Wiz)


转载于:https://www.cnblogs.com/zhoudayang/p/5246148.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/568959.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IndentationError: unindent does not match any outer indentation level-报错问题

在python中遇到这样的问题 翻译过来是&#xff1a; 缩进错误&#xff1a;未缩进与任何外部缩进级别都不匹配 很显然&#xff0c;一般都是格式没对&#xff0c;你看看你的代码对齐了没有。python对缩进非常的严格呢&#xff01; 例如&#xff1a; 此处我的j多打了一个空格&am…

Linux下Rails3 + Lighttpd + fcgi部署研究

前言&#xff1a;为什么要研究Ruby on Rails的部署 学习Ruby on Rails已经一段时间了&#xff0c;一直使用自带的WEBrick服务器进行开发。 WEBrick是一款纯Ruby编写的服务器&#xff0c;使用方便&#xff0c;很适合开发环境下进行系统调试。但是它不支持多线程访问&#…

冒泡排序详解--python

我没学冒泡排序之前眼中的冒泡排序是这个样子的 哈哈哈 https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注&#xff01; 欢迎关注微信公众号&#xff1a;宝藏女孩的成长日记 让这个可爱的宝藏女孩在努力的道路上与你一起同行&#xff01; 如有转载&#xff0c;请注明…

uni-app和php交互DES加密解密数据

1 uni-app操作 (1) 打开HBuilderX的视图->显示终端 cd 切换到你项目的根目录 执行命令 npm install crypto-js 安装成功后你的项目根目录会生成node_modules文件夹&#xff0c;里面有crypto-js就说明成功了 &#xff08;2&#xff09;接下来在哪使用就直接import CryptoJS f…

字典超详细--python

https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注&#xff01; 欢迎关注微信公众号&#xff1a;宝藏女孩的成长日记 让这个可爱的宝藏女孩在努力的道路上与你一起同行&#xff01; 如有转载&#xff0c;请注明出处&#xff08;如不注明&#xff0c;盗者必究&#xf…

ele-plus包的安装和使用

代码仓库 版本详细说明&#xff0c;请查看doc下面的版本文件 最新版本 v0.2.4 安装 npm install ele-plus -S 复制代码引入ElePlus 完整引入 import Vue from vue import ElementUI from element-ui import element-ui/lib/theme-chalk/index.css import App from ./App.vue im…

两数之和-给定一个整数数组nums和一个目标值target,请你在该数组找出和为目标值的那两个整数,并返回他们的数组下标,你可以假设每种输入只会对应一个答案。但是,数组同一个元素不能使-python

https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注&#xff01; 欢迎关注微信公众号&#xff1a;宝藏女孩的成长日记 让这个可爱的宝藏女孩在努力的道路上与你一起同行&#xff01; 如有转载&#xff0c;请注明出处&#xff08;如不注明&#xff0c;盗者必究&#xf…

制作github博客

最近几天突发其想&#xff0c;想做一个GitHub的博客&#xff0c;链接https://imutang.github.io&#xff0c;然后决定先使用HUGO来制作我的第一个个人博客&#xff0c;编辑文字方面没有博客园这么方便 转载于:https://www.cnblogs.com/mutangchun/p/11363405.html

选择排序算法python

选择排序定义&#xff1a; https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注&#xff01; 欢迎关注微信公众号&#xff1a;宝藏女孩的成长日记 让这个可爱的宝藏女孩在努力的道路上与你一起同行&#xff01; 如有转载&#xff0c;请注明出处&#xff08;如不注明&am…

如此互联网?

共享单车已经到了尾声&#xff0c;ofo的处境一直遮遮掩掩&#xff0c;用户押金的真金白银却不知何时才能退回&#xff0c;遥遥无期。Mobike也一样&#xff0c;一直在亏本&#xff0c;持续投资依然无法换来其盈利。 记得几年前&#xff0c;开始注意到街上停有Mobike。记得曾和同…

Python中的异常处理Try...except...finally的使用的简单理解

python中的异常处理1.Python中的异常处理定义2.Try…except…finally的使用3.代码4.运行结果1.Python中的异常处理定义 在程序运行的过程中&#xff0c;如果发生了错误就会报错&#xff0c;我们可以事先约定返回一个错误代码&#xff0c;这样就可以知道是否有错&#xff0c;以…

Aveva Marine 新建项目001

1# 项目代号定义&#xff0c;三个字符&#xff0c;例如Abc 2# 新建文件夹&#xff0c;命名为“Abc” 3# 新建文件名为evars.bat文件&#xff0c;放到项目文件夹的根目录 内容为&#xff1a; 1 SET Abc000项目文件夹路径\Abc000\ 2 SET AbcMAC项目文件夹路径\AbcMAC\ 3 SET …

在CSDN写文章头部生成标题目录

步骤&#xff1a; 1.点击帮助&#xff0c;再点击目录。 2.随后出现目录&#xff0c;再点击复制。 3.把你复制的东西粘贴到文章开头&#xff0c;将你想要作为目录的文字设置成为标题。注意&#xff1a;前面有几个井号键就是几级标题。 5.标题目录设置好之后&#xff0c;就可…

《图片另存为JPG/PNG/WebP》让WebP图片下载为PNG格式

WebP是google推行的新的图片格式, 可以使用更小的空间,保存更清晰的图片, 但由于格式较新, Adobe Photoshop CC 2019 20.0.2版本都无法打开查看, 所以我们需要保存网页中的WebP图片为通用性较强png格式 我们可以使用一款扩展程序图片另存为JPG/PNG/WebP, 将WebP格式图片转换为p…

python中对文件进行读和写

Python读取文件Open方法常用形式主要参数注意对文件进行写对文件进行读Open方法 打开一个文件&#xff0c;并返回文件对象&#xff0c;在对文件进行处理过程都需要使用到这个函数&#xff0c;如果该文件无法被打开&#xff0c;出现OSError报错。 常用形式 两个参数&#xff…

UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x80 in position 14: illegal multibyte sequence

错误情况&#xff1a; 解决办法&#xff1a; 代码; f open("F:\自动化测试工具\Pycharm的项目\老狼.txt", "r", encoding"utf-8")https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注&#xff01; 欢迎关注微信公众号&#xff1a;宝藏…

散列表(算法导论笔记)

散列表 直接寻址表 一个数组T[0..m-1]中的每个位置分别对应全域U中的一个关键字&#xff0c;槽k指向集合中一个关键字为k的元素&#xff0c;如果该集合中没有关键字为k的元素&#xff0c;则T[k] NIL 全域U{0,1,…,9}中的每个关键字都对应于表中的一个下标值&#xff0c;由实际…

Python的os模块常用文件夹的增删改查详解

python常用os模块增os.makedirs("path\\目录") 用于递归创建目录删os.remove("path")用于删除指定路径&#xff08;path&#xff09;的文件os.rmdir("path")&#xff0c;用于删除指定路径&#xff08;path&#xff09;的目录改os.rename() 方法用…

Python中常用的Python time模块常用函数

常用函数time.time()函数time.localtime() 函数time.mktime()函数time.strftime() 函数time.strptime() 函数time.sleep() 函数https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注&#xff01; 欢迎关注微信公众号&#xff1a;宝藏女孩的成长日记 如有转载&#xff0c…

SyntaxError: ‘return‘ outside function 在python里面的报错问题

https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注&#xff01; 欢迎关注微信公众号&#xff1a;宝藏女孩的成长日记 如有转载&#xff0c;请注明出处&#xff08;如不注明&#xff0c;盗者必究&#xff09; Return需要放在函数里面 报错情况&#xff1a; 报错代码&…