LeetCode修炼之路----------334. 递增的三元子序列

334. 递增的三元子序列

题目如下:
在这里插入图片描述
解题代码与解析:

注意点:递增的三元子序列可以是连续递增,也可以是间接递增

 public boolean increasingTriplet(int[] nums) {
        // 给两个变量赋最大的值是为了后面方便能分别记录第一个数和第二个递增数;
        int maxOne = Integer.MAX_VALUE;     // 记录第一个数
        int maxTwo = Integer.MAX_VALUE;     // 记录第二个递增的数

        /**
         *     从开头开始进行遍历数组,maxOne是记录第一个数的,而maxTwo是记录第二个递增的数的,
         * 那么只要有一个数比maxTwo大,那么就符合了;     注意不是连续递增的,可以是间续递增
         *     注意maxTwo这个变量,当它有进行赋值的时候,证明遍历到赋值的那个位置的时候,加它已经
         * 有两个递增的数了,只要后面再有比maxTwo大的,那么就可以直接return了
         *
         */
        for (int n : nums) {
            // 记录第一个数,也是三个中最小的一个,所以它要在前面,所有比它小的都不能给maxTwo进行赋值
            if(n<=maxOne) {
                // maxOne记录三个递增中最小的那个,为了让maxTwo记录大于它的,所以这里使用<=
                maxOne = n;
            } else if (n<=maxTwo) {
                // 进入这里时,maxOne已经记录了一个数,即递增序列中已经有了一个,然后maxTwo记录第二个
                // 这里使用<=,因为它记录第二大的数,这使用<=就是为了让大于它的数进入下面的else从而结束方法
                maxTwo = n;
            } else {
                // 能进来这里证明都比maxOne和maxTwo大,那么加上这次的就有三个了,所以直接return
                // 注意前面的if利用maxOne和maxTwo过滤比它们两小的所以数,maxOne过滤比maxTwo小的,maxTwo过滤比最后一位小的
                return true;
            }
        }
        return false;
    }

 
结果如下:
在这里插入图片描述

谢谢阅读,如有不对之处请指出!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值