题解 | #二维数组中的查找#

二维数组中的查找

https://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
	 既然对于每一个点,都是有相同的操作,那么必然是使用递归的方法;
	 接下来就是考虑递归的操作:有i,j坐标点,target目标值,原始数据,以及潜在的有效性判断因素:边界值。
	 递归函数的要点是:给出函数的签名式,对边界值进行判断,1:给出递归结束的终止条件;2:给出每一个步骤的细化步骤;
	 
	 为了提高效率,还要考虑将递归函数,转化为非递归函数。要诀就是:
	 1.将递归函数的结束条件,作为非递归函数中while的条件判断依据;
	 2.执行各个可能的条件分支情况,并修改while中的变量;
	 3.返回while中的条件判断;
	 
     * 
     * @param target int整型 
     * @param array int整型vector<vector<>> 
     * @return bool布尔型
     */
    bool Find(int target, vector<vector<int> >& array) {
        // write code here
        if (array.empty()) return false;
        if (array[0].empty()) return false;

        return Find(target, array, array.size(), 0, array[0].size()-1);
    }

    bool Find(int target, vector<vector<int>>& array, int rows, int i, int j) {
      if (j >= 0 && i < rows) {
        if (array[i][j] == target)
          return true;
        else if (array[i][j] < target)
          return Find(target, array, rows, i+1, j);
        else
          return Find(target, array, rows, i, j-1);
      } else {
        return false;
      }
    }
};

全部评论

相关推荐

10-29 16:42
门头沟学院 Java
1.今天什么国标的公司打电话约面试,还得准备ppt,好麻烦,网上查薪资一般,打算拒了,不面了2.字节又复活了,什么安全开发,也不知道怎么样,面一面试试吧,还是挺想去字节的,但好难,随缘吧所以今天没面试
嵌入式的小白:面试前可以好好准备下 1.看看你投递的岗位的岗位描述,分析下是哪个业务线,同使要罗列他们描述中提到的技术点 2.根据1中的两点准备 3.岗位描述中应该还有语言要求,这个刷刷八股,要是对自己语言能力很有把握,那就不用看这点了 4.找下你简历中项目部分,看有没有和岗位描述中技术点重合的,这种在面试提到项目时,是高概率问题 好好准备,祝你面试顺利
我的求职进度条
点赞 评论 收藏
分享
Aurora23:属于挂一半,暂时进池子了,隔一段时间没有其他组捞的话就彻底结束了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务