LEETCODE刷题 二维数组查找
Posted anitaguangzi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LEETCODE刷题 二维数组查找相关的知识,希望对你有一定的参考价值。
//给定一个二维数组,其每一行从左到右递增排序,从上到下也是递增排序。给定一个数,判断这个数是否在该二维数组中。 //要求时间复杂度 O(M + N),空间复杂度 O(1)。其中 M 为行数,N 为 列数。 //该二维数组中的一个数,小于它的数一定在其左边,大于它的数一定在其下边。因此,从右上角开始查找,就可以根据 target //和当前元素的大小关系来缩小查找区间,当前元素的查找区间为左下角的所有元素。 #include<stdio.h> int Find(int target, int matrix[3][3],int rows,int cols) { //判空 int r = 0, c = cols - 1; // 从右上角开始 while (r <= rows - 1 && c >= 0) { if (target == matrix[r][c]) { return 1; } else if (target > matrix[r][c]) //以右上角的数作为基准,大于当前数,一定在其下面,小于当前数一定在其左边 { r++; } else { c--; } } return 0; } int main(void) { int a[3][3] = {{1, 2, 8, 9}, {2, 4, 9, 12}, {4, 7, 10, 13}, {6, 8, 11, 15}}; int target = 9; int row = 3; int col = 3; int ret = Find(target,a,row,col); if(ret == 1) { printf("find "); } else { printf("not find "); } }
以上是关于LEETCODE刷题 二维数组查找的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode刷题100天—2022. 将一维数组转变成二维数组(数组)—day55
Leetcode刷题100天—2022. 将一维数组转变成二维数组(数组)—day55
刷题记录leetcode 剑指 Offer(第 2 版)03-11