LeetCode 496. 下一个更大元素 I(哈希)
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(哈希)相关推荐
- LeetCode 496. 下一个更大元素 I
599. 两个列表的最小索引总和 添加链接描述 假设 Andy 和 Doris 想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示. 你需要帮助他们用最少的索引和 ...
- Java实现 LeetCode 496 下一个更大元素 I
496. 下一个更大元素 I 给定两个没有重复元素的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集.找到 nums1 中每个元素在 nums2 中的下一个比其大的值. nu ...
- LeetCode 496. 下一个更大元素 I 解题思路及C++实现
解题思路: 因为这两个int型的vector中不包含重复元素,所以考虑使用c++中的unordered_map,对num2进行遍历,找到每一个元素的下一个更大元素,这样的话,时间复杂度就是O(n). ...
- leetcode 496. 下一个更大元素 I(Java版,单调栈解法)
题目 https://leetcode-cn.com/problems/next-greater-element-i/ 题解 通过Stack.HashMap解决,经典的单调栈问题 先遍历大数组nums ...
- 496. 下一个更大元素 I
496. 下一个更大元素 I 题目 分析 我的解答 官方解答 题目 给定两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集.找到 nums1 中每个元素在 ...
- 【LeetCode】496. 下一个更大元素 I 【单调栈】
题目链接:https://leetcode-cn.com/problems/next-greater-element-i/ 题目描述 给你两个 没有重复元素 的数组 nums1 和 nums2 ,其中 ...
- 496.下一个更大元素I
给定两个没有重复元素的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集.找到 nums1 中每个元素在 nums2 中的下一个比其大的值. nums1 中数字 x 的下一个更 ...
- Leecode 496. 下一个更大元素 I——Leecode每日一题系列
我是小张同学,立志用更简洁的代码做更高效的表达 给你两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集. 请你找出 nums1 中每个元素在 nums2 ...
- leetcode 503. 下一个更大元素 II(单调栈)
给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素.数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它 ...
最新文章
- 推荐一款非常好用的java反编译工具(转)
- 用户设置个人资料时,是否需要一个清空选项?
- IIS6中配置PHP
- 使用matlab工具研究神经网络的简单过程(网络和数据下载)
- 线程学习3——前台线程和后台线程
- (9)Zynq UART控制器介绍
- 面试被问项目上线没_面试官的最爱问“分布式”核心设计问题,没掌握的不妨来看看...
- 杭电2539点球大战
- linux1.0内核下载,LINUX1.0 内核是系统的心脏 - 下载 - 搜珍网
- Python 攻克移动开发失败!
- 倒数第N个字符串 (15 分)
- 拓端tecdat|用R语言模拟混合制排队随机服务排队系统
- ModuleNotFoundError: No module named 'tornado'解决办法
- mmap和MappedByteBuffer
- Android Material Design调色板
- [SPS2010] RC1 安装体验
- 刷题记录 kuangbin带你飞专题一:简单搜索
- hd620显卡驱动 linux,英特尔为Windows 10 推出新显卡驱动 26.20.100.7870
- 用nvidia-docker跑深度学习模型
- 阿里巴巴使命、愿景、价值观、绩效管理中的六大价值观、TAE 与 TOP、聚石塔、阿里云的差异化服务