从零学算法334

334.给你一个整数数组 nums ,判断这个数组中是否存在长度为 3 的递增子序列。
如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k ,使得 nums[i] < nums[j] < nums[k] ,返回 true ;否则,返回 false 。
示例 1:
输入:nums = [1,2,3,4,5]
输出:true
解释:任何 i < j < k 的三元组都满足题意
示例 2:
输入:nums = [5,4,3,2,1]
输出:false
解释:不存在满足题意的三元组
示例 3:
输入:nums = [2,1,5,0,4,6]
输出:true
解释:三元组 (3, 4, 5) 满足题意,因为 nums[3] == 0 < nums[4] == 4 < nums[5] == 6

  • 我的原始人解法:题意我可以理解为,有一个数,存在它前面的某个数小于它,它后面的某个数大于它,就能返回 true
  • 从第二个数往后遍历,因为只要之前存在某个数小于它即可,所以随遍历记录前面的最小值即可,这个实现很简单
  • 实现了一半了。同理因为只需满足后面的某个数大于它,所以我们要得到对当前数来说,后面所有数中的最大值,这里我们用一个 map 存储 nums 中下标 i 对应的后面所有数的最大值是多少,也就是 map<i, max(nums[i+1]~nums[length-1])>。我们逆序遍历 nums,对 i 的前一位来说,它后面的最大值要么是新出现的 nums[i],要么是之前得到的最大值,也就是 max(nums[i+1]~nums[length-1]),发现没,这其实就是 map.get(i)
  •   public boolean increasingTriplet(int[] nums) {int n = nums.length;if(n<3)return false;Map<Integer,Integer> map = new HashMap<>();// 最少要三个数,所以首尾的数我们都跳过判断// 对 n-2 来说他后面只有 nums[n-1],所以初始化它得到最初的 max(nums[i+1]~nums[length-1])map.put(n-2,nums[n-1]);for(int i=n-2;i>1;i--){map.put(i-1,Math.max(map.get(i), nums[i]));}for(int i=1;i<n-1;i++){if(nums[i]>nums[i-1] && nums[i]<map.get(i))return true;// 为了省点空间直接不断更新 nums[i-1] 为前面所有数的最小值nums[i] = Math.min(nums[i],nums[i-1]);}return false;}
    
  • 他人题解:其实只需要两个变量记录最小值 min 和次小值 mid 即可,先初始化他们为 Integer.MAX_VALUE,遍历 nums,如果一个数 num 大于 min,也大于 mid,就说明存在 min < mid < num 这样的序列,直接返回 true
  •   public boolean increasingTriplet(int[] nums) {int min = Integer.MAX_VALUE, mid = Integer.MAX_VALUE;for(int num : nums){if(num <= min)min = num;// 走到这说明 min 肯定是被赋值了,即 min 存在的else if(num<=mid) mid=num;// 走到这说明 mid 也存在,那你大于 mid 就表示存在 min < mid < numelse return true;}return false;}
    

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

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

相关文章

12.1.2 隐式成员函数

12.1.2 隐式成员函数 StringBad 类中的问题是由自动定义的脑式成员通数引起的,这种函数的行为与类设计不符。兵体来说, C自动提供了下面这些成员函数: ● 默认构造函数。如果没有定义构造函数。 ● 复制构造函数。如果没有定义。 ● 赋值操作符,如果没有定文。 默认析构函数,…

C语言:指向数组的指针和指向数组元素的指针

相关阅读 C语言https://blog.csdn.net/weixin_45791458/category_12423166.html?spm1001.2014.3001.5482 指向数组的指针和指向数组元素的指针常常被混淆&#xff0c;或者笼统地被称为数组指针&#xff0c;但它们之间是有差别的&#xff0c;本文就将对此进行讨论。 下面的代码…

Java设计模式:工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)

❤ 作者主页&#xff1a;欢迎来到我的技术博客&#x1f60e; ❀ 个人介绍&#xff1a;大家好&#xff0c;本人热衷于Java后端开发&#xff0c;欢迎来交流学习哦&#xff01;(&#xffe3;▽&#xffe3;)~* &#x1f34a; 如果文章对您有帮助&#xff0c;记得关注、点赞、收藏、…

第五讲观测值中与卫星、接收机有关的误差 第六讲观测值中与信号传播路径有关的误差以及电离层、对流层相关模型 | GNSS(RTK)课程学习笔记day3

说明&#xff1a;以下笔记来自计算机视觉life吴桐老师课程&#xff1a;从零掌握GNSS、RTK定位[链接]&#xff0c;从零掌握RTKLIB[链接]。非原创&#xff01;且笔记仅供自身与大家学习使用&#xff0c;无利益目的。 第五讲 观测值中与卫星、接收机有关的误差 卫星轨道误差 由卫…

Kafka-Kafka核心参数详解

Kafka的HighLevel API使用是非常简单的&#xff0c;所以梳理模型时也要尽量简单化&#xff0c;主线清晰&#xff0c;细节慢慢扩展。 Kafka提供了两套客户端API&#xff0c;HighLevel API和LowLevel API。 HighLevel API封装了kafka的运行细节&#xff0c;使用起来比较简单&…

jQuery实现轮播图代码

简述 一个简单的jQuery轮播图代码,首先,定义了一个slideshow-container的div容器,其中包含了所有轮播图幻灯片。每个幻灯片都包含一个mySlides的类名,并且使用CSS将其隐藏。然后,使用JavaScript代码来控制幻灯片的显示和隐藏。在showSlides()函数中,遍历所有幻灯片并将它…

【项目管理】redmine

Redmine是用Ruby开发的基于web的项目管理软件&#xff0c;是用ROR框架开发的一套跨平台项目管理系统&#xff0c;据说是源于Basecamp的ror版而来&#xff0c;支持多种数据库&#xff0c;有不少自己独特的功能&#xff0c;例如提供wiki、新闻台等&#xff0c;还可以集成其他版本…

Flutter实现丝滑的滑动删除、移动排序等-Dismissible控件详解

文章目录 Dismissible 简介使用场景常用属性基本用法举例注意事项 Dismissible 简介 Dismissible 是 Flutter 中用于实现可滑动删除或拖拽操作的一个有用的小部件。主要用于在用户对列表项或任何其他可滑动的元素执行删除或拖动操作时&#xff0c;提供一种简便的实现方式。 使…

大数据处理与分析-Spark

导论 (基于Hadoop的MapReduce的优缺点&#xff09; MapReduce是一个分布式运算程序的编程框架&#xff0c;是用户开发“基于Hadoop的数据分析应用”的核心框架 MapReduce是一种用于处理大规模数据集的编程模型和计算框架。它将数据处理过程分为两个主要阶段&#xff1a;Map阶…

(2021|EMNLP,CLIP,CLIPScore,RefCLIPScore)CLIPScore:图像标题的无参考评估指标

CLIPScore: A Reference-free Evaluation Metric for Image Captioning 公z号&#xff1a;EDPJ&#xff08;添加 VX&#xff1a;CV_EDPJ 或直接进 Q 交流群&#xff1a;922230617 获取资料&#xff09; 目录 0. 摘要 1. 简介 2. 相关工作 3. CLIPScore 4. 标题评估基准 …

item_get-1688商品详情在跨境电商中的品牌形象塑造与传播

随着全球化的深入发展&#xff0c;跨境电商逐渐成为商品贸易的新趋势。在跨境电商中&#xff0c;商品详情作为消费者了解商品的重要途径&#xff0c;对于品牌形象塑造与传播具有重要意义。本文将探讨item_get-1688商品详情在跨境电商中的品牌形象塑造与传播&#xff0c;以期为相…

vue实现文本上下循环滚动

前言 页面上有两块公告,需要循环滚动,最初使用animation实现了,但如果两块公告的条数不一致的话,就会导致两块公告滚动的快慢不同,由此需要换种方式实现,使两块公告始终以同样的快慢节奏滚动。 第一种方式:animation实现(存在两块公告滚动的快慢不同的问题) <!-…

yolov5障碍物识别-雪糕筒识别(代码+教程)

简介 这是一个检测交通锥并识别颜色的项目。我使用 yolov5 来训练和检测视锥细胞。此外&#xff0c;我使用 k 均值来确定主色&#xff0c;以对锥体颜色进行分类。目前&#xff0c;支持的颜色为红色、黄色、绿色和蓝色。其他颜色被归类为未知。 数据集和注释 我使用了一个自收…

CMMI认证中的ATM是什么?

CMMI&#xff08;Capability Maturity Model Integration&#xff09;认证是国际上广泛认可的一种软件能力成熟度模型&#xff0c;旨在帮助组织提高软件开发的效率和质量。在CMMI认证中&#xff0c;ATM&#xff08;Appraisal Team Member&#xff09;起着关键作用。本文将详细介…

Open5GSUeRANSim3:VirtualBOX VM使用static IP并和host互通

本文档参考 https://blog.csdn.net/shuaihj/article/details/127589833 https://www.cnblogs.com/manongqingcong/articles/16659150.html https://blog.csdn.net/justlpf/article/details/132977047 VM默认使用的是自动分配的IP&#xff0c;每个VM的ip都是10.0.2.15。后续为了…

12.19_黑马数据结构与算法笔记Java

目录 203 排序算法 选择排序 204 排序算法 堆排序 205 排序算法 插入排序 206 排序算法 希尔排序 207 排序算法 归并排序 自顶至下 208 排序算法 归并排序 自下至上 209 排序算法 归并加插入 210 排序算法 单边快排 211 排序算法 双边快排 212 排序算法 快排 随机基准…

ITIL® 4 Foundation​,12月23日即将开课~想了解点击查看

ITIL 4 Foundation即将开课~ 想报名的必须提前预约啦 &#x1f447;&#x1f447;&#x1f447; 培训地点&#xff1a; 远程直播&#xff1a;线上平台学习 开课时间&#xff1a; 周末班&#xff1a;12月23日、24日&#xff1b; 什么是ITIL&#xff1f; 信息技术基础架构…

将Abp默认事件总线改造为分布式事件总线

文章目录 原理创建分布式事件总线实现自动订阅和事件转发 使用启动Redis服务配置传递Abp默认事件传递自定义事件 项目地址 原理 本地事件总线是通过Ioc容器来实现的。 IEventBus接口定义了事件总线的基本功能&#xff0c;如注册事件、取消注册事件、触发事件等。 Abp.Events…

LTD256次升级 |一分钟创建小程序官网 • 官网内容可在小程序分享

1、 商品关联表单支持上传图片&#xff1b; 2、 「我的咨询」新增快捷添加入口&#xff1b; 3、 极速官微新增官网内容分享页面&#xff1b;优化创建流程&#xff1b; 4、 极速官微支持编辑方式添加文章与产品&#xff1b; 5、 极速官微新增数据枢纽入口与网站设置页面&#xf…

(9)Linux Git的介绍以及缓冲区

&#x1f4ad; 前言 本章我们先对缓冲区的概念进行一个详细的探究&#xff0c;之后会带着大家一步步去编写一个简陋的 "进度条" 小程序。最后我们来介绍一下 Git&#xff0c;着重讲解一下 Git 三板斧&#xff0c;一般只要掌握三板斧就基本够用了。 缓冲区&#xff…