二维数组中的查找(python/c++)

题目描述

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
 
class Solution:
    def Find(self, target, array):
        # write code here
         # 主要思路:首先选取右上角的数字,如果该数字大于target,则该列全大于target,删除该列;
        # 如果该数字小于小于target,则该列全小于target,删除该行。
        found = False #初始化
        row= len(array)#求行的长度
        if row:
            col = len(array[0])#列的长度
        else:
            col = 0
        if(row>0 and col>0):
            i=0
            j=col-1
            while(i<row and j>=0):#循环查找
                if array[i][j] == target:
                    found = True
                    break
                elif array[i][j] > target:
                     j -= 1
                elif array[i][j] < target:
                     i += 1
        return found

  

class Solution:
    def Find(self, target, array):
        for row in range(len(array)):#遍历所有的数进行比较查找
            arr = array[row]
            # 对于每一行(一维数组),在这个一维数组中查找target。
            for index in range(len(array[0])):
                if arr[index] == target:
                    return True
        return False

  

c++代码

//解题思路:
//遍历所有的数
#include<iostream>
#include<vector>
using namespace std;
class Solution {
public:
	bool Find(int target, vector<vector<int> > array)
	{
		int rowNum = array.size();
		int colNum = array[0].size();

		for (int i = 0; i<rowNum; i++)
		for (int j = 0; j<colNum; j++)
		{
			if (target == array[i][j])
				return 1;
		}
		return 0;

	}
};

int main(){
	vector<vector<int> > array = { { 1, 2, 8, 9 }, { 2, 4, 9, 12 }, { 4, 7, 10, 13 }, { 6, 8, 11, 15 } };
	int target = 19;
	bool a = Solution().Find(target, array);
	cout << a << endl;
	system("pause");
	return 0;
}

  

原文地址:https://www.cnblogs.com/277223178dudu/p/10431009.html