两个数组的交集
给定两个数组,编写一个函数来计算它们的交集。
示例 1:
输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2,2]
示例 2:
输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [4,9]
class Solution:
def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]:
hashmap={}
inter=[]
#记录hashmap
for i in nums1:
if i not in hashmap:
hashmap[i]=1
else:
hashmap[i]+=1
#历遍list2,并对hashmap键值-1,于是我们返回最大公共数目的键
for i in nums2:
if i in hashmap and hashmap[i]>0:
inter.append(i)
hashmap[i]-=1
return inter
存在重复元素2
给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k。
示例 1:
输入: nums = [1,2,3,1], k = 3
输出: true
示例 2:
输入: nums = [1,0,1,1], k = 1
输出: true
示例 3:
输入: nums = [1,2,3,1,2,3], k = 2
输出: false
首先,题目翻译似乎有问题,容易误导人,i和j的差的绝对值小于k即可
class Solution:
def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool:
Map={}
for ind,i in enumerate(nums):
if i not in Map:
Map[i]=[ind]
else:
for j in Map[i]:
if ind-j<=k:
return True
Map[i].append(ind)
return False