1. 前言
对于一个用了三年java,一年Python的程序员来说,现在学c++也太难受了,然后我就...放弃了
没错,一天一个想法的我,又开了一个专栏,Python刷完牛客网的剑指Offer和LeetCode,每周至少四题,大家监督
2.题目:二维数组中的查找
题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
3.思路
选择从二维数组的左下角开始遍历,如果大于target 就上移,小于target就右移,结束返回False
4.实现
# -*- coding:utf-8 -*-
class Solution:
# array 二维列表
def Find(self, target, array):
# write code here
row=len(array)
col=len(array[0])
#这里用while循环可能看着更舒服一些
for i in range(row):
for j in range(col):
if array[row-i-1][j]>target:
i=i+1
elif array[row-i-1][j]<target:
j=j+1
else:
return True
return False
5. 二维数组的相关知识点
import numpy as np
def Find(target,array):
row=len(array)
col=len(array[0])
for i in range(row):
for j in range(col):
if array[row-i-1][j]>target:
i=i+1
elif array[row-i-1][j]<target:
j=j+1
else:
return True
return False
if __name__=="__main__":
'''第一种创建二维数组的方式'''
m=n=3
array1=[[0]*m]*n
print(len(array1))
print("test=",array1)
array1[0][0]=111
# 也就是说matrix = [array] * 3
# 操作中,只是创建3个指向array的引用,所以一旦array改变,matrix中3个list也会随之改变
print("test=", array1)
"""第二种创建二维数组的方式"""
lists=[[]for i in range(3)]
lists[0].append(1)
lists[1].append(3)
lists[2].append(6)
lists[0][0] = 111
print("list[]:",lists)
print(Find(3,lists))
# 列表生成式
lists2=[[1 for i in range(4)]for j in range(3)]
print("lists2:",lists2)
#使用numpy实现
lists3=np.zeros((m,n),dtype=np.int)
print("lists3:",lists3)
网友评论