剑指offer 3 (38页)

    xiaoxiao2022-06-29  51

    Q:二维数组中每一行递增排序,每一列递增排序。完成一个函数,输入这样的二维数组和一个证书,判断数组中是否含有该整数。 A:从具体数字分析,找出规律即可。 难点:主要对二维数组不熟悉,传参的时候可以降维当作一维数组处理,二维数组与指针参考: http://blog.csdn.net/zhouxuguang236/article/details/12256321

    #include <iostream> using namespace std; bool FindTheNumber(const int num,const int *matrix, const int rows,const int columns) { if (matrix != NULL && rows > 0 && columns>0) { int row = 0; int column = columns -1; while(row < rows && column >=0) { if (matrix[row*columns + column] == num) return true; else if (matrix[row*columns + column] > num) --column; else ++row; } } return false; } int main() { int arr[4][4] = {{1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,11,15}}; cout << FindTheNumber(14, &arr[0][0], 4, 4)<< endl; cout << FindTheNumber(18, &arr[0][0], 4, 4)<< endl; cout << FindTheNumber(0, &arr[0][0], 4, 4)<< endl; //另外一种传参方式:arr代表指向第0行整个数组的指针,用(int*)转化为指向第0行第0个元素的指针 cout << FindTheNumber(12, (int*)arr, 4, 4)<< endl; cout << FindTheNumber(14, NULL, 0, 0)<< endl; return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-1125050.html

    最新回复(0)