三段式数组 I

三段式数组 I

题目

给你一个长度为 n 的整数数组 nums。

如果存在索引 0 < p < q < n − 1,使得数组满足以下条件,则称其为 三段式数组(trionic):

nums[0...p] 严格 递增,
nums[p...q] 严格 递减,
nums[q...n − 1] 严格 递增。
如果 nums 是三段式数组,返回 true;否则,返回 false。

 

示例 1:

输入: nums = [1,3,5,4,2,6]

输出: true

解释:

选择 p = 2, q = 4:

nums[0...2] = [1, 3, 5] 严格递增 (1 < 3 < 5)。
nums[2...4] = [5, 4, 2] 严格递减 (5 > 4 > 2)。
nums[4...5] = [2, 6] 严格递增 (2 < 6)。
示例 2:

输入: nums = [2,1,3]

输出: false

解释:

无法选出能使数组满足三段式要求的 p 和 q 。

 

提示:

3 <= n <= 100
-1000 <= nums[i] <= 1000©leetcode

解答

根据题目,遍历数组从0到p检查严格递增,从p到q检查严格递减,从q到n-1检查严格递增,并且满足0 < p < q < n − 1,也就是p!=0,p!=n-1,q!=p,q!=n-1

class Solution {
    public boolean isTrionic(int[] nums) {
        int cnt=0;
        int n=nums.length;
        int i=0;
        while(i<n-1){
            if(nums[i]>=nums[i+1]){
                break;
            }
            i++;
        }
        //p
        if(i==0){
            return false;
        }
        if(i==n-1){
            return false;
        }
        while(i<n-1){
            if(nums[i]<=nums[i+1]){
                break;
            }
            i++;
        }
        //q
        if(i==n-1){
            return false;
        }
        while(i<n-1){
            if(nums[i]>=nums[i+1]){
                break;
            }
            i++;
        }
        if(i==n-1){
            return true;
        }else{
            return false;
        }
    }
}©leetcode
posted @ 2025-08-03 22:13  Fanny123  阅读(227)  评论(0)    收藏  举报