数组中重复的数字
题目描述
在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任一一个重复的数字。 例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。存在不合法的输入的话输出-1
eg:
# input
[2,3,1,0,2,5,3]
# output
2或3
解题思路
需要找到数字中重复数字,可以采用 dict 数据结构记录列表中每个数字是否出现,如果出现在 dict 中将该数字设置为 key value 为 True,当在 dict 中获取 num 为 True 返回即可
代码实现(python 3.7)
class Solution:
def duplicate(self , numbers ):
if not numbers or not isinstance(numbers, list):
return -1
num_dict = {}
for num in numbers:
if num_dict.get(num):
return num
else:
num_dict[num] = True
二维数组中的查找
题目描叙
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
[
[1,2,8,9],
[2,4,9,12],
[4,7,10,13],
[6,8,11,15]]
给定 target = 7,返回 true。
给定 target = 3,返回 false。
eg:
# Input
7,[[1,2,8,9],[2,4,9,1