首页 > 编程语言 >算法学习day58单调栈part01-739、496

算法学习day58单调栈part01-739、496

时间:2023-06-16 22:56:25浏览次数:45  
标签:util part01 res 元素 day58 int 739 new stack

package LeetCode.stackpart01;

import java.util.Deque;
import java.util.LinkedList;

/**
 * 739. 每日温度
 * 给定一个整数数组 temperatures,表示每天的温度,返回一个数组answer,其中answer[i]是指对于第 i 天,下一个更高温度出现在几天后。
 * 如果气温在这之后都不会升高,请在该位置用 0 来代替。
 * */
public class DailyTemperatures_739 {

    public int[] dailyTemperatures(int[] temperatures) {

        int lens=temperatures.length;
        int []res=new int[lens];

        /**
         如果当前遍历的元素 大于栈顶元素,表示 栈顶元素的 右边的最大的元素就是 当前遍历的元素,
         所以弹出 栈顶元素,并记录
         如果栈不空的话,还要考虑新的栈顶与当前元素的大小关系
         否则的话,可以直接入栈。
         注意,单调栈里 加入的元素是 下标。
         */
        Deque<Integer> stack=new LinkedList<>();
        stack.push(0);
        for(int i=1;i<lens;i++){

            if(temperatures[i]<=temperatures[stack.peek()]){
                stack.push(i);
            }else{
                while(!stack.isEmpty()&&temperatures[i]>temperatures[stack.peek()]){
                    res[stack.peek()]=i-stack.peek();
                    stack.pop();
                }
                stack.push(i);
            }
        }

        return  res;
    }

}
package LeetCode.stackpart01;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Stack;

/**
 * 496. 下一个更大元素 I
 * */
public class NextGreaterElementI_496 {
    public int[] nextGreaterElement(int[] nums1, int[] nums2) {
        Stack<Integer> temp = new Stack<>();
        int[] res = new int[nums1.length];
        Arrays.fill(res,-1);
        HashMap<Integer, Integer> hashMap = new HashMap<>();
        for (int i = 0 ; i< nums1.length ; i++){
            hashMap.put(nums1[i],i);
        }
        temp.add(0);
        for (int i = 1; i < nums2.length; i++) {
            if (nums2[i] <= nums2[temp.peek()]) {
                temp.add(i);
            } else {
                while (!temp.isEmpty() && nums2[temp.peek()] < nums2[i]) {
                    if (hashMap.containsKey(nums2[temp.peek()])){
                        Integer index = hashMap.get(nums2[temp.peek()]);
                        res[index] = nums2[i];
                    }
                    temp.pop();
                }
                temp.add(i);
            }
        }

        return res;
    }
}

 

标签:util,part01,res,元素,day58,int,739,new,stack
From: https://www.cnblogs.com/lipinbigdata/p/17486648.html

相关文章

  • 代码随想录算法训练营第24天 | ● 理论基础 ● 77. 组合 - 第7章 回溯算法part01
     第七章 回溯算法part01今日内容: ●  理论基础 ●  77. 组合    详细布置   理论基础  其实在讲解二叉树的时候,就给大家介绍过回溯,这次正式开启回溯算法,大家可以先看视频,对回溯算法有一个整体的了解。 题目链接/文章讲解:https://programmercar......
  • 算法学习day14二叉树part01-94、144、145
    packageLeetCode.Treepart01;importjava.util.ArrayList;importjava.util.List;publicclassTraversal{publicList<Integer>preorderTraversal(TreeNoderoot){List<Integer>result=newArrayList<Integer>();pre......
  • 「解题报告」CF739E Gosha is hunting
    来南京第二天就感冒了,然后嗓子疼,头疼炸了。哈哈。等等是不是春季赛前我也这个状态来着。呃呃。好像确实一模一样。这玩意跟DP有个鬼关系。下面两个概率用\(u_i,v_i\)表示。首先如果只选两者之一,贡献为\(u_i/v_i\),如果两者都选那么贡献为\(u_i+v_i-u_iv_i\)。我......
  • 代码随想录算法训练营第10天 | ● 理论基础 ● 232.用栈实现队列 ● 225. 用队列实现
     第五章 栈与队列part01●  day 1 任务以及具体安排:训练营一期day 1 ●  day 2 任务以及具体安排:day 2 第一章数组●  day 3 任务以及具体安排:day 3 第二章 链表●  day 4 任务以及具体安排:day 4 第二章 链表●  day 5 周日休息●  ......
  • 代码随想录算法训练营第6天 | 哈希表理论基础, 242.有效的字母异位词, 349. 两个数组
     第三章 哈希表part01  今日任务  ●  哈希表理论基础 ●  242.有效的字母异位词 ●  349. 两个数组的交集 ●  202. 快乐数●  1. 两数之和     详细布置   哈希表理论基础  建议:大家要了解哈希表的内部实现原理,哈希函数,哈希......
  • MT6739 芯片/处理器规格参数介绍 MTK6739核心板
    MT6739芯片采用了四核Cortex-A53的架构,搭配PowerVRGE8100GPU,整合支持最高1080p30fps的视频编解码器和4GCat-4LTE调制解调器以及高达8MP的摄像头,为智能终端提供了一种高效的解决方案。基于MT6739的智能手机配合400MHz的GPU时钟速度能够支持扎实的图像性能表现和出色的......
  • ADV7391BCPZ-ASEMI代理亚德诺ADV7391BCPZ原厂芯片
    编辑-ZADV7391BCPZ参数描述:型号:ADV7391BCPZVDD:1.8VVAA:3.3V全驱动输出电流:34.6mA低驱动输出电流:4.3mA输出电容:10pF模拟输出延迟:6nsDAC模拟输出倾斜:1ns输入高电压:2V输入低电压:0.8V输入泄漏电流:±10μA分辨率:10Bits流马带宽:30MHz色度带宽:13.75MHz  ADV73......
  • 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素。第一章 数组part01
    今天开始第一天,其实之前也刷过题,也写过博客,可是没有坚持下去;主要是没有动力吧,我又是一个严重的拖延症患者,还好遇到刷到Carl哥的视频,记得是在bilibili分享的二分法视频,感觉讲的挺好的,就加了微信;然后发现有刷题训练营,太适合我这种人了,果断加入,哈哈,废话不多说,开始刷题。  第......
  • ASEMI代理ADV7391BCPZ原装ADI车规级ADV7391BCPZ
    编辑:llASEMI代理ADV7391BCPZ原装ADI车规级ADV7391BCPZ型号:ADV7391BCPZ品牌:ADI/亚德诺封装:LFCSP-32批号:2023+安装类型:表面贴装型引脚数量:32工作温度:-40°C~85°C类型:车规级芯片ADV7391BCPZ特征支持多格式视频输出复合(CVBS)和S-视频(Y-C)部件YPrPb(SD、ED和HD)分量RGB(SD......
  • 算法学习day10栈与队列part01-232、225
    packageLeetCode.StackAndQueuepart01;importjava.util.LinkedList;importjava.util.Queue;/***225.用队列实现栈*请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop和empty)。*实现MyStack类:*voidpush(intx)将元......