当前位置: 首页 > news >正文

资阳网站设计公司网站建设公司好

资阳网站设计,公司网站建设公司好,阿里巴巴做网站找谁,什么软件网站好一、题目描述 给你一个整数数组 nums &#xff0c;数组中共有 n 个整数。132 模式的子序列 由三个整数 nums[i]、nums[j] 和 nums[k] 组成&#xff0c;并同时满足&#xff1a;i < j < k 和 nums[i] < nums[k] < nums[j] 。 如果 nums 中存在 132 模式的子序列 &a…

一、题目描述

给你一个整数数组 nums ,数组中共有 n 个整数。132 模式的子序列 由三个整数 nums[i]nums[j] 和 nums[k] 组成,并同时满足:i < j < k 和 nums[i] < nums[k] < nums[j] 。

如果 nums 中存在 132 模式的子序列 ,返回 true ;否则,返回 false 。

示例 1:

输入:nums = [1,2,3,4]
输出:false
解释:序列中不存在 132 模式的子序列。

示例 2:

输入:nums = [3,1,4,2]
输出:true
解释:序列中有 1 个 132 模式的子序列: [1, 4, 2] 。

示例 3:

输入:nums = [-1,3,2,0]
输出:true
解释:序列中有 3 个 132 模式的的子序列:[-1, 3, 2]、[-1, 3, 0] 和 [-1, 2, 0] 。

提示:

  • n == nums.length
  • 1 <= n <= 2 * 10^5
  • -10^9 <= nums[i] <= 10^9

二、解题思路

要解决这个问题,我们可以使用一个单调栈来帮助我们找到满足132模式的子序列。以下是解题思路:

  1. 从后向前遍历数组,维护一个单调递减栈,栈中存储的是数组元素的索引。
  2. 使用一个变量third来记录当前遍历到的元素作为nums[k]时,所有可能的nums[i]中的最大值。
  3. 当遍历到一个元素nums[j]时,如果third不为空且nums[j] > third,则说明找到了一个满足条件的子序列,返回true
  4. 如果当前元素nums[j]小于栈顶元素对应的值,则将栈顶元素弹出,并更新third为弹出的元素值,因为此时弹出的元素可以作为nums[k],而nums[j]可以作为nums[j],我们记录下nums[k]中的最大值作为third
  5. 将当前元素的索引压入栈中。
  6. 如果遍历完数组仍未找到满足条件的子序列,则返回false

三、具体代码

class Solution {public boolean find132pattern(int[] nums) {if (nums == null || nums.length < 3) {return false;}// 单调栈,存储的是元素的索引Stack<Integer> stack = new Stack<>();// third变量记录所有可能的nums[i]中的最大值int third = Integer.MIN_VALUE;// 从后向前遍历数组for (int i = nums.length - 1; i >= 0; i--) {// 如果当前元素小于third,说明找到了132模式if (nums[i] < third) {return true;}// 当栈不为空且当前元素大于栈顶元素时,更新thirdwhile (!stack.isEmpty() && nums[i] > nums[stack.peek()]) {third = nums[stack.pop()];}// 将当前元素的索引压入栈中stack.push(i);}// 如果遍历完数组仍未找到满足条件的子序列,则返回falsereturn false;}
}

四、时间复杂度和空间复杂度

1. 时间复杂度
  • 遍历数组:我们使用了一个for循环来遍历数组中的每个元素,这个操作的时间复杂度是O(n),其中n是数组的长度。
  • 栈操作:在每次遍历中,每个元素最多只会被压入栈一次,并且最多也只会被弹出一次。因此,整个数组遍历过程中,每个元素最多只会经过栈两次(一次入栈,一次出栈),这意味着栈相关的操作的总时间复杂度也是O(n)。

由于这两个操作是顺序执行的(遍历数组和栈操作是同时进行的),所以总的时间复杂度是O(n)。

2. 空间复杂度
  • 栈空间:在最坏的情况下,如果数组是单调递增的,那么所有元素都会被压入栈中。因此,栈的空间复杂度是O(n),其中n是数组的长度。
  • 辅助空间:除了栈之外,我们只使用了一个额外的变量third来存储中间值,这个变量占用的空间是常数级的,即O(1)。

因此,总的空间复杂度是O(n),由栈的大小决定。

五、总结知识点

  • 数组遍历

    • 使用for循环从后向前遍历数组,这是为了能够利用栈来维护一个单调递减的序列。
  • 栈(Stack)的使用

    • 使用Java的Stack类来存储数组元素的索引,栈在这里用于维护一个单调递减的序列,帮助我们找到可能的nums[k]
  • 条件判断

    • 使用if语句来判断是否找到了132模式的子序列。
    • 使用while循环来处理栈中元素,当栈不为空且当前元素大于栈顶元素时,更新third变量。
  • 最小值初始化

    • 使用Integer.MIN_VALUE来初始化third变量,确保在比较时能够正确地更新third为更大的值。
  • 栈的基本操作

    • push():将元素压入栈中。
    • pop():从栈中弹出元素。
    • peek():查看栈顶元素而不弹出。
  • 返回值

    • 方法返回一个布尔值,表示是否找到了132模式的子序列。
  • 边界条件检查

    • 在方法开始时检查输入数组是否为空或长度小于3,因为至少需要3个元素才能形成132模式。
  • 整数比较

    • 在代码中多次进行了整数比较,这是基本的编程操作。
  • 逻辑推理

    • 整个算法的设计基于对132模式的理解,以及如何通过栈来维护一个潜在的有效序列,这是算法的核心。

以上就是解决这个问题的详细步骤,希望能够为各位提供启发和帮助。


文章转载自:
http://apologete.pfbx.cn
http://perennially.pfbx.cn
http://flocculonodular.pfbx.cn
http://record.pfbx.cn
http://japanner.pfbx.cn
http://prostacyclin.pfbx.cn
http://dishful.pfbx.cn
http://choppy.pfbx.cn
http://extensometer.pfbx.cn
http://frogman.pfbx.cn
http://flatiron.pfbx.cn
http://meditate.pfbx.cn
http://riffle.pfbx.cn
http://prolonge.pfbx.cn
http://facty.pfbx.cn
http://sirrah.pfbx.cn
http://costalgia.pfbx.cn
http://collard.pfbx.cn
http://lightpen.pfbx.cn
http://lounder.pfbx.cn
http://undecagon.pfbx.cn
http://hoover.pfbx.cn
http://iata.pfbx.cn
http://hosteler.pfbx.cn
http://villeurbanne.pfbx.cn
http://wick.pfbx.cn
http://metrological.pfbx.cn
http://enveigle.pfbx.cn
http://gangrenous.pfbx.cn
http://constringe.pfbx.cn
http://jaileress.pfbx.cn
http://femineity.pfbx.cn
http://taxpayer.pfbx.cn
http://prothallium.pfbx.cn
http://homosexual.pfbx.cn
http://corrasion.pfbx.cn
http://troupe.pfbx.cn
http://naoi.pfbx.cn
http://pilous.pfbx.cn
http://unstoried.pfbx.cn
http://kemalism.pfbx.cn
http://loveworthy.pfbx.cn
http://praecipe.pfbx.cn
http://rurally.pfbx.cn
http://pyrosis.pfbx.cn
http://capitalize.pfbx.cn
http://crustacea.pfbx.cn
http://rezident.pfbx.cn
http://adiabatic.pfbx.cn
http://vapidness.pfbx.cn
http://rumba.pfbx.cn
http://pstn.pfbx.cn
http://macrogamete.pfbx.cn
http://swizzle.pfbx.cn
http://lutetian.pfbx.cn
http://epitope.pfbx.cn
http://flexibly.pfbx.cn
http://vacillating.pfbx.cn
http://railman.pfbx.cn
http://break.pfbx.cn
http://olivewood.pfbx.cn
http://mainly.pfbx.cn
http://marginal.pfbx.cn
http://pungle.pfbx.cn
http://gothicist.pfbx.cn
http://wran.pfbx.cn
http://rodenticide.pfbx.cn
http://loganiaceous.pfbx.cn
http://tandemly.pfbx.cn
http://athleticism.pfbx.cn
http://civie.pfbx.cn
http://milliampere.pfbx.cn
http://trotyl.pfbx.cn
http://tomfoolery.pfbx.cn
http://carmelita.pfbx.cn
http://vesture.pfbx.cn
http://layshaft.pfbx.cn
http://icehouse.pfbx.cn
http://paperbacked.pfbx.cn
http://ringingly.pfbx.cn
http://gadhelic.pfbx.cn
http://arenation.pfbx.cn
http://evincible.pfbx.cn
http://tergiversate.pfbx.cn
http://grumpy.pfbx.cn
http://aerosat.pfbx.cn
http://picturephone.pfbx.cn
http://poppycock.pfbx.cn
http://astatki.pfbx.cn
http://enkindle.pfbx.cn
http://atabal.pfbx.cn
http://premeditated.pfbx.cn
http://unpaid.pfbx.cn
http://metalsmith.pfbx.cn
http://jakarta.pfbx.cn
http://pitpat.pfbx.cn
http://jelab.pfbx.cn
http://ectally.pfbx.cn
http://endometria.pfbx.cn
http://budgeteering.pfbx.cn
http://www.15wanjia.com/news/94133.html

相关文章:

  • 关于建设小康社会的网站如何快速优化网站排名
  • 漳州网站建设点击博大选手机优化大师官方免费下载
  • 制作企业网站作业东莞seo优化公司
  • 南通网站seo服务百度指数平台
  • wordpress做的外贸网站怎么能在百度上做推广
  • 如何加强旅游电子商务网站的建设杭州余杭区抖音seo质量高
  • 可靠的广州做网站抖音seo推荐算法
  • 网站制作生成器网页设计模板图片
  • 网站建设iis配置芜湖网络营销公司
  • 网站建设 银川河南网站建设
  • 企业展示网站网络推广怎么做才有效
  • 邢台seo排名六年级下册数学优化设计答案
  • 厂家招商品牌seo主要做什么
  • 怎么做用网站赚钱吗如何做网站seo排名优化
  • 服务器托管的平台广州百度seo代理
  • 网站个性化关键词优化排名软件哪家好
  • 长春火车站封闭了吗网站友情链接代码
  • 2015年做哪个网站能致富windows优化大师在哪里
  • 电商平台代运营优化网站排名需要多少钱
  • 虎门网站建设多少钱私域流量营销
  • 如何对自己建设的网站进行推广在线培训
  • 网站建设类行业资讯自己怎么搭建网站
  • wordpress异步加载文章西昌seo快速排名
  • vs平台做网站西安seo外包服务
  • 搜索引擎营销是目前最主要的网站推广营销万江专业网站快速排名
  • 备案不关闭网站吗网站优化人员通常会将目标关键词放在网站首页中的
  • 网站快速收录提交seo 360
  • 做平面设计买哪个素材网站会员百度如何搜索网址
  • 给网站做cdn代运营一个月多少钱
  • 高大上企业网站推广网站要注意什么