题解 | #61.矩阵最长递增路径#

矩阵最长递增路径

http://www.nowcoder.com/practice/7a71a88cdf294ce6bdf54c899be967a2

dfs递归

function solve( matrix ) {
  let dirs = [ [0,1],    //上
               [0,-1],   //下
               [-1,0],   //左
               [1,0],    //右
             ];  //四个方向
  let m = matrix.length;
  let n = matrix[0].length;
  
  let dp = new Array(m+1);
  for(let i=0; i<dp.length; i++)
    dp[i] = new Array( n+1 ).fill(0);
  
  function dfs(i,j){
    if(dp[i][j]>0)  return dp[i][j];
    if(dp[i][j]==0)  dp[i][j]=1;
    for(let k=0; k<4; k++){
      let nextI = i+dirs[k][0];
      let nextJ = j+dirs[k][1];
      if(nextI>=0 && nextI<m && nextJ>=0 && nextJ<n && matrix[nextI][nextJ]>matrix[i][j])
        dp[i][j] = Math.max( dp[i][j],dfs(nextI,nextJ)+1 );
    }
    return dp[i][j];
  }
  
  if(m==0 || n==0)  return 0;
  let ans = 0;
  for(let i=0; i<m; i++)
    for(let j=0; j<n; j++)
      ans = Math.max( ans, dfs(i,j) );
  
  return ans
}
全部评论

相关推荐

点赞 评论 收藏
分享
11-09 14:54
已编辑
华南农业大学 产品经理
大拿老师:这个简历,连手机号码和照片都没打码,那为什么关键要素求职职位就不写呢? 从上往下看,都没看出自己到底是产品经理的简历,还是电子硬件的简历? 这是一个大问题,当然,更大的问题是实习经历的描述是不对的 不要只是去写实习流程,陈平,怎么去开会?怎么去讨论? 面试问的是你的产品功能点,是怎么设计的?也就是要写项目的亮点,有什么功能?这个功能有什么难处?怎么去解决的? 实习流程大家都一样,没什么优势,也没有提问点,没有提问,你就不得分 另外,你要明确你投的是什么职位,如果投的是产品职位,你的项目经历写的全都是跟产品无关的,那你的简历就没用 你的面试官必然是一个资深的产品经理,他不会去问那些计算机类的编程项目 所以这种四不像的简历,在校招是大忌
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务