剑指offer第二天之二维数组中的查找

剑指offer第二天之二维数组中的查找
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
java:
在这里插入图片描述

package offer;

public class Solution {
     /*
data:2020516
author:魏振东
fun:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,
每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,
判断数组中是否含有该整数。
* */
    public static boolean Find(int target, int [][] array) {
        boolean found = false;
//        选取右上角的点
//        行
        int row = 0;
//        列
        int cols = array[0].length-1;

        while(row<array.length&&cols>=0)
        {
            if(array[row][cols]==target)
            {
                found = true;
                return found;
            }
//            如果数组中的数大于target,则列向左移动
            else if(array[row][cols]>target)
            {
                cols--;
            }
//            如果数组中的数小于target,表示target可能在这列,则向下移动
            else{
                row++;
            }
        }
        return found;
    }
    public static void main(String args[])
    {
        int [][] array =new int[][]{{1,2,8,9},{4,7,10,13}};
        for(int i =0;i<array.length;i++){
            for(int j =0;j<array[0].length;j++){
                System.out.print(array[i][j]);
            }
            System.out.println();
        }

        System.out.println( Find(7,array));

    }
}

python :
在这里插入图片描述

# -*- coding:utf-8 -*-
class Solution:
    # array 二维列表
       def Find(self, target, array):
        # write code here
        found = False
        row = 0
        cols = len(array[0]) - 1
        while row < len(array) and cols >= 0:
            if array[row][cols] == target:
                found = True
                break
            elif array[row][cols]>target:
                cols -= 1
            else:
                row += 1
        return found

c++:
在这里插入图片描述

class Solution {
public:
    bool Find(int target, vector<vector<int> > array) {
        bool found = false;
        int row = 0;
        int cols = array[0].size()-1;
        while(row<array.size()&&cols>=0)
        {
            if(array[row][cols]==target)
            {
                found = true;
                break;
            }
            else if(array[row][cols]>target)
            {
                cols--;
            }
            else
            {
                row++;
            }
        }
        return found;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章