首页 > 编程语言 >java数据结构与算法

java数据结构与算法

时间:2022-10-18 15:36:06浏览次数:42  
标签:Deque java int 算法 new 数据结构 stack nums2

直接在java中一直使用原生的Stack作为栈,看到大佬们都改用Deque了,因此使用Deque作为栈做一个练习。

这是leetCode一个题目,我直接截个图吧

 

 

本题目可以分解为两个问题:
1.如何寻找某个元素右侧比他更大的第一个元素,答案是使用单调栈
2.如何存储第一个问题的结果,答案是哈希表
废话少说,上代码
public int[] nextGreaterElement(int[] nums1, int[] nums2) {
        Map<Integer, Integer> map = new HashMap<>();
        Deque<Integer> stack = new ArrayDeque<>();
        int n = nums1.length;
        int m = nums2.length;
        int[] ans = new int[n];
        //初始化单调栈,栈中是比nums2[i]大的元素的按升序保存
        for (int i = m - 1; i >= 0; i--) {
            //栈中有小于当前元素的元素,全部弹出
            int num = nums2[i];
            while (!stack.isEmpty() && stack.peek() <= num) {
                stack.pop();
            }
            map.put(num, stack.isEmpty() ? -1 : stack.peek());
            stack.push(num);
        }

        for (int i = 0; i < n; i++) {
            ans[i] = map.get(nums1[i]);
        }
        return ans;
    }

 

标签:Deque,java,int,算法,new,数据结构,stack,nums2
From: https://www.cnblogs.com/wangbin2188/p/16802682.html

相关文章

  • 一文详尽系列之K-means算法
    K-means是我们最常用的基于距离的聚类算法,其认为两个目标的距离越近,相似度越大。算法1.1牧师-村民模型​K-means有一个著名的解释:牧师—村民模型:有四个牧师去郊区布道,一......
  • 一文详尽系列之EM算法
    EM算法,全称ExpectationMaximizationAlgorithm。期望最大算法是一种迭代算法,用于含有隐变量(HiddenVariable)的概率参数模型的最大似然估计或极大后验概率估计。思想EM算......
  • 力扣523(java)-连续的子数组和(中等)
    题目:给你一个整数数组nums和一个整数 k,编写一个函数来判断该数组是否含有同时满足下述条件的连续子数组:子数组大小至少为2,且子数组元素总和为k的倍数。如果存......
  • Java并发编程学习7-阻塞队列
    阻塞队列介绍阻塞队列之前,先来介绍下队列Queue。Queue用来临时保存一组等待处理的元素。它提供了几种非阻塞队列实现,如下:ConcurrentLinkedQueue,这是一个传统的先进先出......
  • JavaScript 获取两个时间相差的周数
    exportfunctiongetWeek(date1,date2){letd1=newDate(date1);letd2=newDate(date2);console.log(Math.ceil(parseInt(((d2-d1)/(1000*3......
  • java学习笔记38
    面向对象什么是多态1.多态概述多态是继封装、继承之后,面向对象的第三大特性。2.多态现实意义理解:现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的同学......
  • Java数据结构_Collection类
     双链表结构     LinkedList可以完成队列结构栈结构(双向链表)栈对头结点进行add和removepop的底层就是pu......
  • JAVA项目中常见的异常处理汇总
    在进行JAVA项目开发时,不免会遇到一些比较常见的异常处理情况,下面是我通过在网上查询了一些相关资料进行的各种异常处理情况的总结1.字符串转化为数字的异常(Java.lang.Numb......
  • Java代码审计sql注入
    java_sec_code该项目也可以叫做JavaVulnerabilityCode(Java漏洞代码)。每个漏洞类型代码默认存在安全漏洞(除非本身不存在漏洞),相关修复代码在注释里。具体可查看每个漏......
  • Problem P33. [算法课分支限界法]分割等和子集
    动态规划,dp,即计算多加第i个数,可以达到的数值可以到多少。详细可见:https://leetcode.cn/problems/partition-equal-subset-sum/solution/fen-ge-deng-he-zi-ji-by-leetcod......