大家唱的都是我写的歌 2022-04-28 21:15 采纳率: 20%
浏览 75
已结题

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;
    }};

  • 写回答

2条回答 默认 最新

  • 普通网友 2022-05-05 22:55
    关注

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

    评论

报告相同问题?

问题事件

  • 系统已结题 5月7日
  • 修改了问题 5月4日
  • 赞助了问题酬金10元 4月29日
  • 创建了问题 4月28日

悬赏问题

  • ¥15 uniapp的h5项目写一个抽奖动画
  • ¥15 TeleScan不能修改bar
  • ¥100 请问我基于逐飞库写的这个有关于mp u6050传感器的函数,为什么输出的值是固定的?
  • ¥15 hadoop中启动hive报错如下怎么解决
  • ¥15 如何优化QWebEngineView 加载url的速度
  • ¥15 关于#hadoop#的问题,请各位专家解答!
  • ¥15 如何批量抓取网站信息
  • ¥15 Spring Boot离线人脸识别
  • ¥15 使用Ant Design Pro vue的时候,使用环境变量的时候,构建报错是什么原因
  • ¥15 NRF24L01能发送但是不能接收