1. 题目

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

nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出-1。

示例 1:
输入: nums1 = [4,1,2], nums2 = [1,3,4,2].
输出: [-1,3,-1]
解释:对于num1中的数字4,你无法在第二个数组中找到下一个更大的数字,因此输出 -1。对于num1中的数字1,第二个数组中数字1右边的下一个较大数字是 3。对于num1中的数字2,第二个数组中没有下一个更大的数字,因此输出 -1。示例 2:
输入: nums1 = [2,4], nums2 = [1,2,3,4].
输出: [3,-1]
解释:对于num1中的数字2,第二个数组中的下一个较大数字是3。对于num1中的数字4,第二个数组中没有下一个更大的数字,因此输出 -1。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/next-greater-element-i

2. 解题

  • 将数组2的数值作为哈希表的 key,下标作为 value
  • 用数组1的数值去哈希表里查找在该数值在数组2中的位置
class Solution {public:vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {int i, j;unordered_map<int, int> m;for(i = 0; i < nums2.size(); ++i){m[nums2[i]] = i;}vector<int> ans;for(i = 0; i < nums1.size(); ++i){for(j = m[nums1[i]]+1; j < nums2.size(); ++j){if(nums1[i] < nums2[j]){ans.push_back(nums2[j]);break;}if(j == nums2.size()-1){ans.push_back(-1);break;}}if(j == nums2.size())ans.push_back(-1);}return ans;}
};

LeetCode 496. 下一个更大元素 I(哈希)相关推荐

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

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

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

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

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

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

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

    题目 https://leetcode-cn.com/problems/next-greater-element-i/ 题解 通过Stack.HashMap解决,经典的单调栈问题 先遍历大数组nums ...

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

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

  6. 【LeetCode】496. 下一个更大元素 I 【单调栈】

    题目链接:https://leetcode-cn.com/problems/next-greater-element-i/ 题目描述 给你两个 没有重复元素 的数组 nums1 和 nums2 ,其中 ...

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

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

  8. Leecode 496. 下一个更大元素 I——Leecode每日一题系列

    我是小张同学,立志用更简洁的代码做更高效的表达 给你两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集. 请你找出 nums1 中每个元素在 nums2 ...

  9. leetcode 503. 下一个更大元素 II(单调栈)

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

最新文章

  1. 推荐一款非常好用的java反编译工具(转)
  2. 用户设置个人资料时,是否需要一个清空选项?
  3. IIS6中配置PHP
  4. 使用matlab工具研究神经网络的简单过程(网络和数据下载)
  5. 线程学习3——前台线程和后台线程
  6. (9)Zynq UART控制器介绍
  7. 面试被问项目上线没_面试官的最爱问“分布式”核心设计问题,没掌握的不妨来看看...
  8. 杭电2539点球大战
  9. linux1.0内核下载,LINUX1.0 内核是系统的心脏 - 下载 - 搜珍网
  10. Python 攻克移动开发失败!
  11. 倒数第N个字符串 (15 分)
  12. 拓端tecdat|用R语言模拟混合制排队随机服务排队系统
  13. ModuleNotFoundError: No module named 'tornado'解决办法
  14. mmap和MappedByteBuffer
  15. Android Material Design调色板
  16. [SPS2010] RC1 安装体验
  17. 刷题记录 kuangbin带你飞专题一:简单搜索
  18. hd620显卡驱动 linux,英特尔为Windows 10 推出新显卡驱动 26.20.100.7870
  19. 用nvidia-docker跑深度学习模型
  20. 阿里巴巴使命、愿景、价值观、绩效管理中的六大价值观、TAE 与 TOP、聚石塔、阿里云的差异化服务

热门文章

  1. C++里的花括号{},块,作用域
  2. c语言中用文件处理数据,C语言文件处理 -C语言从文件中读写格式化数据
  3. linux 最强shell,最牛B 的 Linux Shell 命令(一)
  4. linux 信号处理函数详解
  5. 详解Objective-C消息传递机制
  6. 基于Silverlight+WCF的SAAS开发平台TAP(二)之核心技术
  7. 进程之父子进程的关系
  8. Linux 终端(TTY)
  9. Linux驱动程序的数据封装
  10. 内核抢占会让内核调度更好吗?