二维数组中的查找
来源:互联网 发布:刷游戏币软件 编辑:程序博客网 时间:2024/05/16 19:33
1、题目描述
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
2、代码
(1)从右上角开始查找
bool Find(int target, vector<vector<int> > array){ // -1勿忘 for (int i = 0, j = array[i].size() - 1; i < array.size(), j >= 0;) { //向左移动一列 if (array[i][j] > target) j--; //向下移动一行 else if (array[i][j] < target) i++; else return true; } return false;}
(2)从左下角开始查找
bool Find(int target, vector<vector<int> > array){ // -1勿忘 int i = array.size() - 1, j = 0; while (i>=0 && j<array[i].size()) { //向上移动一行 if (array[i][j] > target) i--; //向右移动一列 else if (array[i][j] < target) j++; else return true; } return false;}
3、思路分析
这里最重要的就是不能从左上角或者是右下角开始比较,因为从这2个角上开始比较一次无法排除一行或者一列的区域。因此,这个题目中只需要保证是从左下或者是右上开始比较的就行。
4、编程注意
(1)在vector的操作中,如果vec的size()是N,那么vec[i]中的i只能取到(N-1),下标是从0开始的,这点很容易出错。在本题目中,比如从左下角开始比较的时候, i = array.size()-1,注意后面的-1别忘记。
阅读全文
0 0
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- Fresco源码分析之DraweeView
- 秒杀系统架构优化思路
- bash和shell的区别
- Vue入门系列之Vue实例详解与生命周期
- JDBC的两层模型与三层模型(多层)
- 二维数组中的查找
- Ubuntu 16.04下Intel SGX应用程序程序开发——打印Hello World!
- 进程调度API之autoremove_wake_function
- 互联网架构,如何进行容量设计?
- 部署IIS项目时出现Server Error in '/' Application
- AndroidStudio 3.0升级之compile、implementation简要说明
- 设计模式(三十)------23种设计模式(22):装饰器模式
- MySQL中的UNIX_TIMESTAMP函数使用总结
- 【马拉松】【Postman】【测试】【Socket.IO】| Chat · 预告