Day 52 || 739. 每日温度 、 496.下一个更大元素 I 、503.下一个更大元素II

739. 每日温度

题目链接: 力扣题目链接

**思路:**需要使用到单调栈,单调栈记录放入当前值所在数组的位置,只要当前数小于栈顶就放入,要是大于栈顶就弹出当记录的数组危及减去当前for循环的位置。

※要是求左侧或者右侧最大值栈就是从栈顶往栈底依次递增,相反左侧或者右侧最小值就是栈顶往栈底递减。

复制代码
class Solution {
    public int[] dailyTemperatures(int[] temperatures) {
        Stack<Integer> stack = new Stack<>();
        stack.push(0);
        int[] res = new int[temperatures.length];
        for(int i=1;i<temperatures.length;i++){
            if(temperatures[i]<=temperatures[stack.peek()]){
                stack.push(i);
            }else{
                while(!stack.isEmpty() && temperatures[stack.peek()] < temperatures[i]){
                    int prevIndex = stack.pop();
                    res[prevIndex] = i- prevIndex;
                }
                stack.push(i);
            }
        }
        return res;
    }
}

496.下一个更大元素 I

题目链接: 力扣题目链接

思路: 和"739. 每日温度"差不多,可以创建一个HashMap保存nums2的结果,便于nums1在其中快速找到结果。

496.下一个更大元素 I

题目链接: 力扣题目链接

**思路:**题目关键是如何将数组循环起来,可以for循环的长度乘以二,然后利用 i%nums.length来取余用来获得当前值,其他的就都相同,结果就是新的数组从零开始取原数组的长度的值。

复制代码
import java.util.Stack;
import java.util.Arrays;

class Solution {
    public int[] nextGreaterElements(int[] nums) {
        Stack<Integer> stack = new Stack<>();
        int[] res = new int[nums.length];
        Arrays.fill(res, -1);  // 初始化结果数组为 -1
        
        // 遍历 nums 数组两遍来模拟循环数组的效果
        for (int i = 0; i < nums.length * 2; i++) {
            int currentIndex = i % nums.length;  // 当前索引,使用模运算实现循环
            // 当栈不为空并且栈顶元素对应的值小于当前元素
            while (!stack.isEmpty() && nums[stack.peek()] < nums[currentIndex]) {
                int prevIndex = stack.pop();  // 弹出栈顶元素的索引
                res[prevIndex] = nums[currentIndex];  // 更新结果数组
            }
            // 只在第一次遍历时将当前索引压入栈
            if (i < nums.length) {
                stack.push(currentIndex);  // 将当前元素的索引压入栈
            }
        }
        
        return res;
    }
}

时间:2h

相关推荐
埃菲尔铁塔_CV算法21 分钟前
基于扩张卷积与双分支参数调控的低光照图像增强算法完整研究与工程解析
人工智能·神经网络·算法·机器学习·计算机视觉
迈巴赫车主25 分钟前
优先队列(PriorityQueue)
数据结构·算法
hai31524754329 分钟前
有规则的AI编制操作系统演进过程展示
人工智能·程序人生·算法·逻辑回归·创业创新
数据仓库搬砖人32 分钟前
SHAP 详解:从博弈论原理到 XGBoost 实战
算法
老鱼说AI32 分钟前
统计学习方法第七章:支持向量机精讲(超硬核长文深入预警!)
人工智能·深度学习·神经网络·算法·机器学习·支持向量机·学习方法
容器魔方35 分钟前
KubeEdge SIG AI: 基于KubeEdge-Ianvs的大模型联邦微调算法
大数据·人工智能·算法·云原生·容器·云计算
列星随旋44 分钟前
矩阵快速幂
java·算法·矩阵
z200509301 小时前
今日算法(回溯全排列)
c++·算法·leetcode
Boom_Shu1 小时前
构造函数程序
数据结构·算法
MicroTech20251 小时前
微算法科技(NASDAQ: MLGO)量子安全与区块链:量子神经网络QNN赋能动态共识与量子密钥分发
科技·算法·安全