题目:

You are given two arrays (without duplicates) nums1 and nums2 where nums1’s elements are subset of nums2. Find all the next greater numbers for nums1's elements in the corresponding places of nums2.

The Next Greater Number of a number x in nums1 is the first greater number to its right in nums2. If it does not exist, output -1 for this number.

Example 1:

Input: nums1 = [4,1,2], nums2 = [1,3,4,2].
Output: [-1,3,-1]
Explanation:
For number 4 in the first array, you cannot find the next greater number for it in the second array, so output -1.
For number 1 in the first array, the next greater number for it in the second array is 3.
For number 2 in the first array, there is no next greater number for it in the second array, so output -1.

Example 2:

Input: nums1 = [2,4], nums2 = [1,2,3,4].
Output: [3,-1]
Explanation:
For number 2 in the first array, the next greater number for it in the second array is 3.
For number 4 in the first array, there is no next greater number for it in the second array, so output -1.

Note:

  1. All elements in nums1 and nums2 are unique.
  2. The length of both nums1 and nums2 would not exceed 1000.

代码:

自己的:

 class Solution {
public:
vector<int> nextGreaterElement(vector<int>& findNums, vector<int>& nums) {
vector<int> result;
int s1 = findNums.size();
int s2 = nums.size();
bool b = ;
for (int i=; i<s1; i++){
int tem = -;
for (int j=; j <s2; j++){
if (findNums[i] == nums[j]){
for (int k=j; k<s2; k++){
if (nums[k]>findNums[i]){
tem = nums[k];
break;
}
}
}
}
result.push_back(tem);
}
return result;
}
};

别人的:

 class Solution {
public:
vector<int> nextGreaterElement(vector<int>& findNums, vector<int>& nums) {
stack<int> s;
unordered_map<int,int> hash;
for(int i=;i<nums.size();i++){
if(s.empty()){
s.push(nums[i]);
}
else if(nums[i] > s.top()){
while(!s.empty() && s.top()<nums[i]){
hash[s.top()] = nums[i];
s.pop();
}
s.push(nums[i]);
}
else s.push(nums[i]);
}
while(!s.empty()){
hash[s.top()] = -;
s.pop();
}
vector<int> res;
for(int i=;i<findNums.size();i++){
res.push_back(hash[findNums[i]]);
}
return res;
}
};

unordered_map类是c++11标准的内容,具体介绍见链接:https://msdn.microsoft.com/zh-cn/library/bb982522.aspx

最新文章

  1. iphone 群发短信 闪退 彻底解决
  2. Longest Substring Without Repeating Characters (c#)
  3. joomla3.1安装不通过Magic Quotes GPC解决方法
  4. java正则表达式常用实例——借鉴思路
  5. 剑指offer--面试题17
  6. iOS开发--浅谈CocoaAsyncSocket编程
  7. printf格式输出总结
  8. linux core dump学习
  9. 转:Web安全与Rational AppScan入门
  10. 关于int main( int argc, char *argv[] )
  11. SQL Server 查询某个字段值在哪张表的哪个字段
  12. sql 语句按字段指定值排序及分页
  13. 10 个 MySQL 经典错误【转】
  14. IdentityServer4 错误解决方案
  15. JavaScript对象编程-第3章
  16. string和list互转
  17. ASP.net 网站开发知识点总结
  18. es6(14)--iterator for ...of循环
  19. val和var和Java
  20. 事务ACID特性

热门文章

  1. css3背景及字体渐变
  2. linux 块设备驱动 (三)块设备驱动开发
  3. SQL Cursor生命周期
  4. Leetcode 001-twosum
  5. 计算机鼻祖-Donald Knuth(高纳德) 的传奇
  6. Hibernater中的持久化对象以及状态转换
  7. 清理yum 缓存
  8. ORA-00257
  9. Node 文件上传,ZIP
  10. 我的前端之旅-nodejs 安装静态的文件服务器 (1)