class Solution {
private:
vector a;
struct Pro{
int next;
int now;
};
stack<Pro> b;
Pro pro;
public:
vector nextGreaterElement(vector& findNums, vector& nums) {
if(nums.size()==0||findNums.size()==0)
return a;
for(int i = 0;i<nums.size();i++)
{
int count = nums[i];
pro.now = count;
for(int j = i;j<nums.size();j++)
{
if(nums[j]>count)
{
pro.next = nums[j];
break;
}
else
pro.next = -1;
}
b.push(pro);
}
while(!b.empty())
{
int flag = 0;
for(int k = 0;k<findNums.size();k++)
{
if(findNums[k]==b.top().now)
{
a[k] = b.top().next;
b.pop();
flag++;
break;
}
}
if(flag == 0)
b.pop();
}
return a;
}
};
这个是我的代码,大概思路就是通过结构体中的数分别存当前值和这个值对应的目标输出值,最后遍历findNum的vector来和栈底的now值匹配,匹配上了就给返回的vector添加当前栈底对应的next.
不知道为什么一直执行错误,已经排除没有初始化的问题,感觉像是越界??可是vector哪来的越界这一说。。
希望大佬们帮忙看下是哪里的错误