题目

https://leetcode-cn.com/problems/next-greater-element-i/

题解

通过Stack、HashMap解决,经典的单调栈问题

  1. 先遍历大数组nums2,首先将第一个元素入栈;
  2. 继续遍历,当当前元素小于栈顶元素时,继续将它入栈;当当前元素大于栈顶元素时,栈顶元素出栈,此时应将该出栈的元素与当前元素形成key-value键值对,存入HashMap中;
  3. 当遍历完nums2后,得到nums2中元素所对应的下一个更大元素的hash表;
  4. 遍历nums1的元素在hashMap中去查找‘下一个更大元素’,当找不到时则为-1。
import java.util.HashMap;
import java.util.Stack;public class Solution {public static int[] nextGreaterElement(int[] nums1, int[] nums2) {// 记录每个位置右边第一个比 x 大的元素HashMap<Integer, Integer> map = new HashMap<>();// 单调栈Stack<Integer> stack = new Stack<>();int cur = 0;for (int num : nums2) {while (!stack.isEmpty() && stack.peek() < num) {map.put(stack.pop(), num);}stack.push(num);}int[] ret = new int[nums1.length];for (int i = 0; i < nums1.length; i++) {Integer t = map.get(nums1[i]);if (t == null) ret[i] = -1;else ret[i] = t;}return ret;}public static void main(String[] args) {int[] nums1 = {4, 1, 2};int[] nums2 = {1, 3, 4, 2};nextGreaterElement(nums1, nums2);}
}

leetcode 496. 下一个更大元素 I(Java版,单调栈解法)相关推荐

  1. LeetCode 496. 下一个更大元素 I

    599. 两个列表的最小索引总和 添加链接描述 假设 Andy 和 Doris 想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示. 你需要帮助他们用最少的索引和 ...

  2. Java实现 LeetCode 496 下一个更大元素 I

    496. 下一个更大元素 I 给定两个没有重复元素的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集.找到 nums1 中每个元素在 nums2 中的下一个比其大的值. nu ...

  3. 【leetcode刷题】51.下一个更大元素 I——Java版

    ⭐欢迎订阅<leetcode>专栏,每日一题,每天进步⭐ 算法不行,现在语文也不行了.我哭了,你们呢? --leetcode此题热评 前言 哈喽,大家好,我是一条. 糊涂算法,难得糊涂 & ...

  4. LeetCode 496. 下一个更大元素 I(哈希)

    1. 题目 给定两个没有重复元素的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集.找到 nums1 中每个元素在 nums2 中的下一个比其大的值. nums1 中数字 x ...

  5. LeetCode 496. 下一个更大元素 I 解题思路及C++实现

    解题思路: 因为这两个int型的vector中不包含重复元素,所以考虑使用c++中的unordered_map,对num2进行遍历,找到每一个元素的下一个更大元素,这样的话,时间复杂度就是O(n). ...

  6. 将一个数组中的值按逆序重新排放。_六十五、下一个更大的数系列,单调栈解决方法...

    「@Author:Runsen」 ❝ 编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题进行代码化. 「---- Runsen」 ❞ 据说,放张小姐姐觉得照片可以提高阅读量,图是来源学校 ...

  7. 496. 下一个更大元素 I

    496. 下一个更大元素 I 题目 分析 我的解答 官方解答 题目 给定两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集.找到 nums1 中每个元素在 ...

  8. Leetcode 503:下一个更大元素 II(超详细的解法!!!)

    给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素.数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它 ...

  9. Leetcode 496:下一个更大元素 I(超详细的解法!!!)

    给定两个没有重复元素的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集.找到 nums1 中每个元素在 nums2 中的下一个比其大的值. nums1 中数字 x 的下一个更 ...

最新文章

  1. 苏宁11.11:苏宁易购订单搜索系统架构及实现
  2. 如何将本地项目上传至git中进行管理的解决办法
  3. ASP.NET Core微服务(七)——【docker部署linux上线】(RDS+API接口测试部分)
  4. 【C语言】控制台窗口图形界面编程(三)窗口相关设置
  5. 删除Nifi中的template
  6. ACM卡常处理办法(虽然我到现在没遇到)
  7. JavaScript 游动层onmouseover
  8. eclipse中查看某个方法(函数)被谁调用
  9. 【APICloud系列|25】 easeChat模块(环信-即时通讯)的实现
  10. python实现雪花飘落的效果_使用javascript实现雪花飘落的效果
  11. Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage导致主从不同步解决方法
  12. 基于信息论的编码技术
  13. 2019年10月江苏计算机二级C语言编程题解析
  14. 【窗口置顶神器】DeskPins
  15. opendrive中的几何形状
  16. 运算放大器的偏置电流
  17. 色度抽样(4:2:0)到底是什么意思?
  18. 住在上千万的豪宅里,你猜建筑成本占多少?
  19. Unity 判断两物体碰撞方向
  20. 天池大数据众智平台笔记SQL(一)

热门文章

  1. VVC/VTM:第14次会议接收提案汇总
  2. Linux快速学习-进程号端口查询
  3. yolo 海思嵌入式_一、基于海思芯片:从算法到移植 darknet框架下训练yolov3
  4. 爬虫项目五:最详细的京东商品、评价爬虫、词云展示
  5. 选择合同管理系统时,建筑工程企业需要考虑哪些因素?
  6. 作业2 视频剪辑软件调研
  7. 【庖丁解牛】MySQL编译出现报错 : Could not find rpcgen 解决方案
  8. 爱她,就要让她幸福!
  9. 收拾屋子,翻到了一个键盘,想起了她
  10. oauth认证中容易被错误使用而导致的漏洞