二维数组查找——剑指offer

题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序,请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否有该整数。

 1 #include <stdio.h>
 2 #include<stdbool.h>
 3 int main()
 4 {
 5     int find(int  matrix[4][4], int rows, int columns, int number);
 6     int a[4][4] = {{ 1, 2, 8, 9 },
 7                    { 2, 4, 9, 12 },
 8                    { 4, 7, 10, 13 },
 9                    { 6, 8, 11, 15 } };
10     int result = find(a, 4, 4, 12);
11     if (result == 1)
12         printf("已经查到\n");
13     else
14         printf("数组中没有此元素\n");
15     return 0;
16 }
17 int find(int  matrix[4][4], int rows, int columns, int number)
18 {
19     bool found = false;
20     if (matrix != NULL && rows>0 && columns>0)
21     {
22         int a = 0;
23         int b = columns - 1;
24         while (a<rows && b >= 0)
25         {
26             if (matrix[a][b] == number)
27             {
28                 found = true;
29                 break;
30             }
31             else if (matrix[a][b]> number)
32                 --b;
33             else
34                 ++a;
35         }
36     }
37     return found;
38 }

时间: 2024-11-05 22:58:51

二维数组查找——剑指offer的相关文章

offer 二维数组查找

二维数组查找: (1)C语言实现方式: 测试用例:int AA[16]={1,2,8,9,2,4,9,12,4,7,10,13,6,8,11,15}; bool Find1(int * target, int rows,int colums,int number) //输入的行数和列数 { int row=0, colum=colums-1; //实时变化的 /下标 if (target==NULL||rows<=0||colums<=0)//保持 { return false; } whil

“举一反三”合并数组--《剑指offer》

与上篇思想一样,或者说是替换数字的另一种版本吧,题目如下: 有两个已经排好的数组A1和A2,A1的末尾有足够的空间来容纳A2,我们将A2数组插入到A1中,继续保持已经排序: 这样看来就和替换空格相似了,如果我们在A1数组从头到尾复制数字,这样导致A1数组后面的数一直不断往后移动,复杂度一样是O(n2),所以,我们来举一反三: //2014-5-18 //举一反三,合并数组 #include <iostream> using namespace std; const int length = 5

php利用array_search与array_column实现二维数组查找

在看php手册数组函数时,看到了一个高赞的用户回答传送门,利用array_search与array_column实现二维数组查找,不用自己写个循环,减少工作量. <?php $userdb = array( 0 => array( 'uid' => 100, 'name' => 'Sandra Shush', 'url' => 'urlof100' ), 1 => array( 'uid' => 5465, 'name' => 'Stefanie Mcmoh

item3 二维数组中的查找[剑指offer]

题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序. 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有这个整数? 1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15 思路:查找7 从右上角的数组开始判断:9>7,又因为每一列从上到下递增,所以这一列淘汰 1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15 接着第三列也被排除 1 2 8 9 2 4 9 12 4 7 10 13 6 8 11

二维数组中的查找-剑指Offer

二维数组中的查找 题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 输入描述 array: 待查找的二维数组 target:查找的数字 输出描述 查找到返回true,查找不到返回false 思路 因为数组是从左到右从上到下都是递增排序的,所以我们可以从右上角开始查找,如果右上角的数比target大,那它所在的这一列都大,可以舍去,直到找到小的,然后开始从上向下找,若右上

《剑指Offer》算法题——二维数组查找

题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. class Solution { public: bool Find(vector<vector<int> > array, int target) { int col = array.size(); int i = 0; while (i < col) { int j = array[i].size()

剑指offer整理-------二维数组查找

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 1 public boolean Find(int target, int[][] matrix) { 2 3 int row = 0; 4 int col = matrix[0].length - 1; 5 /*从二维数组的右上角开始寻找,因为每一行的最右侧为最大 6 值,先从每一行找,找不到则换行,此

【剑指offer】规则二维数组查找

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 思路:从数组左下角开始判断,如果目标数据大于左下角数字,则列号右移(增加),若目标数字小于左下角数字,则行号上移(减小) public class Solution {     public boolean Find(int target, int [][] array) {         int ro

二维数组的查找——剑指offer第一题

题目描述: 在一个二维数组中(每个一维数组的长度相同), 每一行都按照从左到右递增的顺序排序, 每一列都按照从上到下递增的顺序排序. 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 设计思路: 遍历所有行 遍历行中的每个元素 判断元素值是否与给定的target值相等 相等返回True 判断元素是否大于给定target值(比target值大的话跳出循环) 遍历完没有返回false 代码: 1 import numpy as np 2 class Solution: 3