牛客网&剑指Offer&二维数组的查找
代码实现
#include<iostream>
#include<vector>
using std::cout;
using std::cin;
using std::endl;
using std::vector;
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
if (array.empty()) return false;
int array_row = array.size(); //数组行数
int array_column = array[0].size(); //数组列数
int new_row = 0;
int new_column = array_column - 1;
while ((array_row > 0) && (array_column > 0))
{
if ((array[new_row][new_column]) == target)
return true;
else if (array[new_row][new_column] < target)
{
array_row--;
new_row++;
}
else if (array[new_row][new_column] > target)
{
array_column--;
new_column--;
}
else
return false;
}
return false;
}
};
int main()
{
int test_value = 9;
Solution test;
vector<vector<int> >array(4, vector<int>(4)); //定义一个4*4的二维数组
//给数组元素赋值
array[0][0] = 1;
array[0][1] = 2;
array[0][2] = 3;
array[0][3] = 4;
array[1][0] = 2;
array[1][1] = 3;
array[1][2] = 6;
array[1][3] = 7;
array[2][0] = 3;
array[2][1] = 4;
array[2][2] = 7;
array[2][3] = 8;
array[3][0] = 5;
array[3][1] = 6;
array[3][2] = 9;
array[3][3] = 10;
if (test.Find(test_value, array) == true)
{
cout << "true" << endl;
}
else
cout << "false" << endl;
return 0;
}
编程笔记
- 编程思路:对二维数组的数据特点进行分析,构建查找元素策略;
- 要使用vector对象,必须包含头文件vector,其次,vector包含在名称空间std中,可使用using编辑指令、using声明或std::vecor;
- 声明创建一个名为vt的vector对象,它可储存n_elem个类型为typeName的元素:
vector<typeNme> vt(n_elem)
其中参数n_elem可以是整型常量,也可以是整型变量;
- 声明创建一个名为arr的array对象,它可储存n_elem个类型为typeName的元素:
array<typeNme,n_elem> arr;
与创建vector对象不同的是,n_elem不可以是整型变量;
-
数组vector与数组array初始化一维数组与二维数组的方式;
-
一维数组和二维数组作为函数参数的赋值方式,包括参数的形式;
vector的几种初始化及赋值方式参考链接
vector的几种初始化及赋值方式参考链接
array的几种初始化及赋值方式参考链接
二维数组初始化与函数参数形式参考链接1
二维数组初始化与函数参数形式参考链接2 -
求二维数组的行数与列数;
int array_row = array.size(); //数组行数
int array_column = array[0].size(); //数组列数
- 分别求一维数组的长度。
//可适用于int类型数组和array类型数组,不适用于vector类型数组
template<class T>
int length(T& arr)
{
return sizeof(arr) / sizeof(arr[0]);
}
//可适用于vector类型数组和array类型数组,不适用于int类型数组
vector<int> vec(7);
array<int, 10>arr;
arr_len = arr.size();
vec_len = vec.size();
- c/c++中sizeof()、strlen()、length()、size()详解和区别
c/c++中sizeof()、strlen()、length()、size()详解和区别参考链接