今天写了三道题目
分别是
242. 有效的字母异位词、349. 两个数组的交集、1. 两数之和
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
# Solution1 使用数组;
record = [0] * 26 # 创建一个数组;
for i in s:
# 我们并不需要记住“a”的ASCII值,只需要求出一个相对数值就可以了;
record[ord(i) - ord('a')] += 1
for j in t:
record[ord(j) - ord('a')] -= 1
for m in range(26):
if record[m] != 0:
#record数组如果有的元素不为零0,说明字符串s和t一定是谁多了字符或者谁少了字符
return False
return True
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
# # Solution1 用字典和集合来解决;
# table = {}
# for num in nums1:
# table[num] = table.get(num, 0) + 1
# # 使用集合存储结果
# res = set()
# for num in nums2:
# if num in table:
# res.add(num)
# del table[num]
# return list(res)
# Solution2 使用数组来解决(适用于“数”<=1000的情况)
count1 = [0]*1001
count2 = [0]*1001
result = []
for i in range(len(nums1)):
count1[nums1[i]]+=1
for j in range(len(nums2)):
count2[nums2[j]]+=1
for k in range(1001):
if count1[k]*count2[k]>0:
result.append(k)
return result
# # Solution3 用集合直接来解决
# return list(set(nums1) & set(nums2)) # "&"用于取交集
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
# Solution1 使用字典
records = dict()
for index, value in enumerate(nums):
if target - value in records: # 遍历当前元素,并在map中寻找是否有匹配的key
return [records[target- value], index]
records[value] = index # 如果没找到匹配对,就把访问过的元素和下标加入到map中
return []