当前位置: 首页 > news >正文

496.下一个更大元素Ⅰ

老样子,题目:496. 下一个更大元素 I - 力扣(LeetCode)

题解:代码随想录

AC代码:

class Solution {public int[] nextGreaterElement(int[] nums1, int[] nums2) {Stack<Integer> stack=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);}stack.add(0);for(int i=1;i<nums2.length;i++){if(nums2[i]<=nums2[stack.peek()]){stack.add(i);}else{while(!stack.isEmpty()&&nums2[i]>nums2[stack.peek()]){if(hashMap.containsKey(nums2[stack.peek()])){Integer index=hashMap.get(nums2[stack.peek()]);res[index] = nums2[i];}stack.pop();}stack.push(i);}}return res;}
}

和昨天的每日温度差不多,但是要复杂一点

但是也差不多,题目的意思是让我们找出num1每个元素在num2中相应位置从右边起第一个比它大的值,这就好办了,和昨天的几乎就快一样了,只不过是两个数组而已,因为nums1是nums2的子集,其实我们就将nums2放入栈中维护就行了,按照单调递减栈来维护,如果出现需要进行维护的元素了就查看此刻栈顶的值是不是在nums1中出现,是就可以记录当前nums1的下一个更大数了

http://www.lryc.cn/news/475026.html

相关文章:

  • C++类和对象上
  • 《图像边缘检测算法综述》
  • Git 使用指南:从基础到实战
  • 新生代对象垃圾回收如何避免全堆扫描
  • [论文阅读] | 智能体长期记忆
  • Vue2.0 通过vue-pdf-signature@4.2.7和pdfjs-dist@2.5.207实现PDF预览
  • gradle的安装及其配置
  • qt QImage详解
  • 数据分析与效果评估的有效方法与实践探讨
  • Langchain调用模型使用FAISS
  • 双向链表的实现
  • Charles简单压力测试
  • MMSegmentation测试阶段推理速度非常慢的一种可能原因
  • 数据结构之链式结构二叉树的实现(初级版)
  • day01-MybatisPlus
  • Postgresql源码(137)执行器参数传递与使用
  • 韩国恋爱游戏:阿西, 美女室友竟然…?百度网盘下载
  • 一个运维牛人对运维规则的10个总结
  • Istio基本概念及部署
  • 基于 Python 的 Django 框架开发的电影推荐系统
  • 离线数仓开发SQL编写和调试的最佳实践(如何又快又好完成任务,学会几条就不用当很辛苦的牛马)
  • PostgreSQL 增量备份:保护你的数据资产
  • 字节青训-寻找最大葫芦
  • el-checkbox勾选一个变成了勾选所有
  • ExpandingCard扩展卡片
  • 移远通信推出八款天线新品,覆盖5G、4G、Wi-Fi和LoRa领域
  • MySQL 9从入门到性能优化-创建触发器
  • UE5 第三人称学习之动画 control rig
  • C++之--初见模板初阶
  • Nature|用于无线监测颅内信号的植入式柔性超声波传感器(柔性传感/健康监测/植入式电子/水凝胶)