面试momenta的面试题

昨天面试Momenta的一个面试题。只给5-10分钟的时间,不需要写代码,只说出解题的思路,当时可能时间太紧加紧张没完全说出来,今天写一下代码,对自己有个交代

#include<iostream>
#include<vector>
#include<queue>
/*有一个离散的二维平面中有m x n的网格,网格上面可能有障碍物也可能没有,
写一个方程式来表示从某一个非终点位置出发每次只能走一步,可以走到上、下、左、右、左上、左下、右上、右下共8个方向,是否能够到达终点(BFS或者DFS都可以)
*/
class mom
{
public:

    //0表示当前位置无障碍物,1表示有障碍物.从某一个无障碍物的点是否可以到达最后
    bool canReach_dfs(std::vector<std::vector<int>>gird)
    {

      int m=gird.size();
      int n=gird[0].size();

      if(gird[m-1][n-1]==1)
      {
        std::cout<<"false"<<std::endl;
          return false;
       }

      for(int i=0;i<m-1;++i)
      {
          for(int j=0;j<n-1;++j)
          {
              if(gird[i][j]==0)
              {
                  dfs(gird,i,j);
              }
          }
      }
      if(gird[m-1][n-1]==1)
          {
          return true;
          }
      return false;
    }
    void dfs(std::vector<std::vector<int>>&gird,int i,int j)
    {
        int m=gird.size();
        int n=gird[0].size();


        gird[i][j]=1;

        if(j>0&&gird[i][j-1]==0){dfs(gird,i,j-1);}
        if(j<n-1&&gird[i][j+1]==0){dfs(gird,i,j+1);}
        if(i>0&&gird[i-1][j]==0){dfs(gird,i-1,j);}
        if(i<m-1&&gird[i+1][j]==0){dfs(gird,i+1,j);}
        if(i>0&&j>0&&gird[i-1][j-1]==0){dfs(gird,i-1,j-1);}
        if(i>0&&j<n-1&&gird[i-1][j+1]==0){dfs(gird,i-1,j+1);}
        if(i<m-1&&j>0&&gird[i+1][j-1]==0){dfs(gird,i+1,j-1);}
        if(i<m-1&&j<n-1&&gird[i+1][j+1]==0){dfs(gird,i+1,j+1);}
    }

    bool canReach_bfs(std::vector<std::vector<int>>gird)
    {
        std::queue<std::pair<int,int>>qu;
        int m=gird.size();
        int n=gird[0].size();

         if(gird[m-1][n-1]==1)
          {
             std::cout<<"false"<<std::endl;
             return false;
          }

        for(int i=0;i<m-1;++i)
        {
            for(int j=0;j<n-1;++j)
            {
                if(gird[i][j]==0)
                {
                    qu.push({i,j});
                    gird[i][j]=1;

                  while(!qu.empty())
                  {
                    int x=qu.front().first;
                    int y=qu.front().second;
                    qu.pop();
                    if(x>0&&gird[x-1][y]==0)
                    {
                        qu.push({x-1,y});
                        gird[x-1][y]=1;
                    }
                    if(x<m-1&&gird[x+1][y]==0)
                    {
                        qu.push({x-1,y});
                        gird[x+1][y]=1;
                    }
                    if(y>0&&gird[x][y-1]==0)
                    {
                        qu.push({x,y-1});
                        gird[x][y-1]=1;
                    }
                    if(y<m-1&&gird[x][y+1]==0)
                    {
                        qu.push({x,y+1});
                        gird[x][y+1]=1;
                    }
                    if(x>0&&y>0&&gird[x-1][y-1]==0)
                    {
                        qu.push({x-1,y-1});
                        gird[x-1][y-1]=1;
                    }
                    if(x>0&&y<m-1&&gird[x-1][y+1]==0)
                    {
                        qu.push({x-1,y+1});
                        gird[x-1][y+1]=1;
                    }
                    if(x<n-1&&y>0&&gird[x+1][y-1]==0)
                    {
                        qu.push({x+1,y-1});
                        gird[x+1][y-1]=1;
                    }
                    if(x<n-1&&y<m-1&&gird[x+1][y+1]==0)
                    {
                        qu.push({x+1,y+1});
                        gird[x+1][y+1]=1;
                    }
                  }
                }
            }
        }
        if(gird[m-1][n-1]==1)
        {
            std::cout<<"true"<<std::endl;
            return true;
        }
        std::cout<<"false"<<std::endl;
                    return false;
    }
};

int main()
{
    std::vector<std::vector<int>> res={{0,0,1,1,1},
                                       {1,0,0,1,1},
                                       {0,1,1,1,1},
                                       {1,0,0,1,1},
                                       {1,1,1,0,0}};

    mom so;
    //so.canReach_dfs(res);
    so.canReach_bfs(res);

    return 0;
}

在 Vue.js 应用程序中,你可以通过多种方式获取当前时间。下面是一个简单的例子,它展示了如何在一个Vue组件内获取并显示当前时间。 ### 方法一:直接在模板中使用 利用 JavaScript 的内置 `Date` 对象可以在模板里直接生成当前时间: ```html <template> <div>{{ currentTime }}</div> <!-- 直接绑定数据属性 --> </template> <script> export default { data() { return { currentTime: new Date().toLocaleString(), // 初始化时设置为当前时间 }; }, }; </script> ``` 这种方法简单明了,但如果希望页面加载后仍能实时更新时间,则需采用其他办法如定时刷新或侦听器监听变化。 ### 方法二:使用 computed 计算属性 和 watch 侦听器 实现自动更新 如果想让时间每秒都保持最新状态,可以结合 `computed` 属性与 `setInterval()` 来创建一个不断更新的时间变量: ```html <template> <div>{{ formattedTime }}</div> <!-- 绑定到计算属性 --> </template> <script> import moment from 'moment'; // 可选导入 moment.js 或者类似的库用于美化日期格式化(非必需) export default { data() { return { now: null, }; }, mounted() { this.updateNow(); // 页面挂载完成后立即更新一次时间 setInterval(() => { // 设置间隔函数每隔一秒调用 updateNow 更新时间 this.updateNow(); }, 1000); }, methods: { updateNow() { this.now = new Date(); // 将此刻的实际时间赋值给 this.now } }, computed: { formattedTime() { if (!this.now) return ''; // 初次渲染之前避免错误发生 const options = { // 自定义输出选项 hour: 'numeric', minute: 'numeric', second: 'numeric' }; return this.now.toLocaleTimeString([], options); // 返回经过处理后的字符串形式的时间 // 若已安装 moment.js ,则可以用以下替代: //return moment(this.now).format('HH:mm:ss'); } } } </script> ``` 在这个版本里面,我们不仅实现了基本的功能——随时间流动而持续更新的计时功能;而且还加入了对用户界面友好性的考虑——通过配置合适的参数保证时间能够按照指定的方式展示出来。 此外还有一种更为简洁的做法就是依赖于第三方插件比如 [vue-moment](https://github.com/brockpetrie/vue-moment),它可以极大地简化涉及到时间和日期的操作流程。 以上就是在 Vue.js 中几种常见的获取及动态显示当前时间的方法啦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值