一开始填了一个示例在遍历那一步是可以执行的,var也是可以获取的。
但是换了一个[[1,1],[1,1],[1,1]]的示例,在遍历那一步就卡着了
最后超过时间限制报错了
class Solution {
public:
vector<vector<int>> pacificAtlantic(vector<vector<int>>& heights) {
vector<vector<int>> ans;
vector<int> a;
bool flag=true;
bool flag1=true;
vector<vector<int>> Pacific;
Pacific.push_back({0,0});
vector<vector<int>> Atlantic;
Atlantic.push_back({int(heights.size()-1),int(heights[0].size()-1)});
for(int i=1;i<heights.size();i++) Pacific.push_back({i,0});
for(int i=1;i<heights[0].size();i++) Pacific.push_back({0,i});
for(int i=heights.size()-2;i>=0;i--) Atlantic.push_back({i,int(heights[0].size()-1)});
for(int i=heights[0].size()-2;i>=0;i--) Atlantic.push_back({int(heights.size()-1),i});
while(flag)
{flag=false;
for(auto var:Pacific)
{
if(var[0]+1<heights.size())
if(heights[var[0]][var[1]]<=heights[var[0]+1][var[1]])
{ a={var[0]+1,var[1]};
if(!count(Pacific.begin(),Pacific.end(),a))
{Pacific.push_back({var[0]+1,var[1]});
flag=true;}
}
if(var[1]+1<heights[0].size())
if(heights[var[0]][var[1]]<=heights[var[0]][var[1]+1])
{ a={var[0],var[1]+1};
if(!count(Pacific.begin(),Pacific.end(),a))
{Pacific.push_back({var[0],var[1]+1});
flag=true;}}
}}
while(flag1)
{flag1=false;
for(auto var:Atlantic)
{
if(var[0]-1>=0)
if(heights[var[0]][var[1]]<=heights[var[0]-1][var[1]])
{ a={var[0]-1,var[1]};
if(!count(Atlantic.begin(),Atlantic.end(),a))
{Atlantic.push_back({var[0]-1,var[1]});
flag1=true;}
}
if(var[1]-1>=0)
if(heights[var[0]][var[1]]<=heights[var[0]][var[1]-1])
{ a={var[0],var[1]-1};
if(!count(Atlantic.begin(),Atlantic.end(),a))
{Atlantic.push_back({var[0],var[1]-1});
flag1=true;}}
}}
for(auto var:Pacific)
{
if(count(Atlantic.begin(),Atlantic.end(),var))
ans.push_back(var);
}
return ans;
}};