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;
}};
leetcode刷题,如果超时了,可以看下以前的人的正确的思路,再对自己的做下改进
你可以在本地编译器上测试下看看是代码的原因还是输入的原因
或者把代码以代码段发出来,看图片不太清楚