leetcode 遍历容器问题

img

img

img


一开始填了一个示例在遍历那一步是可以执行的,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;
    }};

leetcode刷题,如果超时了,可以看下以前的人的正确的思路,再对自己的做下改进

你可以在本地编译器上测试下看看是代码的原因还是输入的原因
或者把代码以代码段发出来,看图片不太清楚

img