LeetCode——503. Next Greater Element II
来源:互联网 发布:校园网解绑网卡mac地址 编辑:程序博客网 时间:2024/06/01 10:35
题目链接
题面:
503. Next Greater Element II
DescriptionHintsSubmissionsDiscussSolution
DiscussPick One
Given a circular array (the next element of the last element is the first element of the array), print the Next Greater Number for every element. The Next Greater Number of a number x is the first greater number to its traversing-order next in the array, which means you could search circularly to find its next greater number. If it doesn't exist, output -1 for this number.
Example 1:
Input: [1,2,1]Output: [2,-1,2]Explanation: The first 1's next greater number is 2;
The number 2 can't find next greater number;
The second 1's next greater number needs to search circularly, which is also 2.
Note: The length of given array won't exceed 10000.
题意:
给定一个循环数组,问按顺时针方向,比每个元素大的第一个元素分别是什么,无则为-1。
解题:
此题解法类似于496的解法,巧妙利用栈的结构,但不同的是,保存的是还未找到比其大的元素的位置,同时又是循环数组,所以要扫两遍,第一遍扫,加入还没找到比其大的元素的位置,第二遍扫时,则无需再加入元素位置,只是给第一遍没找到的元素找对应的值,若仍无法找到,则是无解。最后再扫一遍位置,输出值即可。
代码:
class Solution {public: vector<int> nextGreaterElements(vector<int>& nums) { map <int,int> m; stack <int> s; vector <int> v; for(int i=0;i<nums.size();i++){ if(s.empty()) { s.push(i); } else{ while(!s.empty()){ if(nums[i]>nums[s.top()]){ m[s.top()]=nums[i]; s.pop(); } else break; } s.push(i); } } for(int i=0;i<nums.size();i++){ while(!s.empty()){ if(nums[i]>nums[s.top()]){ m[s.top()]=nums[i]; s.pop(); } else break; } if(s.empty())break; } for(int i=0;i<nums.size();i++){ if(m.count(i)==0) v.push_back(-1); else v.push_back(m[i]); } return v; }};
阅读全文
0 0
- LeetCode——503. Next Greater Element II
- leetcode 503. Next Greater Element II
- LeetCode 503. Next Greater Element II
- [leetcode]503. Next Greater Element II
- LeetCode 503. Next Greater Element II
- LeetCode 503. Next Greater Element II
- LeetCode笔记:503. Next Greater Element II
- LeetCode OJ 503. Next Greater Element II
- LeetCode 503. Next Greater Element II
- leetcode 503. Next Greater Element II
- [LeetCode] 503. Next Greater Element II
- leetcode 503. Next Greater Element II
- [LeetCode] 503. Next Greater Element II
- leetcode 503. Next Greater Element II
- leetcode 503. Next Greater Element II
- leetcode-Next Greater Element II
- 503. Next Greater Element II
- 503. Next Greater Element II
- java web项目:adminsystem(1)
- shiro源码分析篇2:请求过滤,登录判断
- 洛谷10月月赛R2-T1-浮游大陆的68号岛
- 高阶函数(2)
- VMware虚拟机安装Linux操作系统
- LeetCode——503. Next Greater Element II
- 图像采集卡的种类和区别
- Machine Learning 学习 之 RBF网络
- 【服务器】owncloud的WebDAV
- CSS3 pointer-events:none应用举例及扩展
- 人工智能算法--KNN算法(C++实现)
- 字符串的选择性拷贝
- 在一个有序的旋转数组中,查找给定值
- Bribe the Prisoners(Easy)