首页 > 编程语言 > 详细

单调栈-循环数组某一元素的下一个更大元素

时间:2021-03-06 12:57:17      阅读:22      评论:0      收藏:0      [点我收藏+]

题目描述

[503. 下一个更大元素 II]https://leetcode-cn.com/problems/next-greater-element-ii/

题解

本题暴力解法思路简单:

找某一元素的下一个更大元素:只需从该元素向后扫描,再从开头扫到该元素前一个位置,如果找到大于该元素的第一个元素,则停止,否则返回-1。
代码:

class Solution {
    public int[] nextGreaterElements(int[] nums) {
        int[] nextGretEleArr = new int[nums.length];
        for(int i=0;i<nums.length;i++){
            boolean isFind = false;
            for(int j=i+1;j<nums.length;j++){
                if(nums[j]>nums[i]){
                    nextGretEleArr[i] = nums[j];
                    isFind = true;
                    break; 
                }
            }
            if(isFind == false){
                for(int j=0;j<i;j++){
                    if(nums[j]>nums[i]){
                        nextGretEleArr[i] = nums[j];
                        isFind = true;
                        break; 
                    }
                }
            }
            if(isFind == false){
                nextGretEleArr[i] = -1;
            }
        }
        return nextGretEleArr;
    }
}

优化解法:单调栈

9|8|5|12|11|5|6
:-??:-??

单调栈-循环数组某一元素的下一个更大元素

原文:https://www.cnblogs.com/WhiteThornZzf/p/14490123.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!