[leetcode]503. Next Greater Element II
来源:互联网 发布:淘宝卖家如何实名认证 编辑:程序博客网 时间:2024/04/30 02:10
题目链接:https://leetcode.com/problems/next-greater-element-ii/
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.
方法一(暴力法,时间复杂度O(n*n)):
class Solution{public: vector<int> nextGreaterElements(vector<int>& nums) { vector<int> res; int numsSize=nums.size(); for(int i=0;i<numsSize;i++) { int tmp=nums[i]; int size=0; for(int j=i+1;size<numsSize;size++,j++) { int k=j%numsSize; if(nums[k]>tmp) { res.push_back(nums[k]); break; } } if(size==numsSize) res.push_back(-1); } return res; }};
方法二:
解题思路:
初始化一个栈s,s存nums的下标,结果数组res,res值全是-1,对nums遍历两次,如果nums[s.top()]的值小于nums[j],res[s.top()]=nums[j],s出栈,直到nums[s.top()]>=nums[j],随后s进j。
class Solution{public: vector<int> nextGreaterElements(vector<int>& nums) { vector<int> res(nums.size(),-1); stack<int> s; for(int i=0;i<2*nums.size();i++) { int j=i%nums.size(); while (!s.empty() && nums[s.top()]<nums[j]) { res[s.top()]=nums[j]; s.pop(); } s.push(j); } return res; }};
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 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
- 503. Next Greater Element II
- 制图 | AutoCAD 基本设置和使用
- ubuntu12.04建立交叉编译环境开发openwrt
- 菱形输出 Java
- [机器学习][3]--口袋算法与线性回归
- Linux文件编程
- [leetcode]503. Next Greater Element II
- 笔记练习中的知识盲点
- 可变数组
- bzoj1040 [ZJOI2008]骑士
- 天气预报一句实现
- 【Mac】树莓派声音与flash问题
- TP配置--------(三)
- 蓝桥杯 带分数
- 一些准备