1 题目描述
2 题解
2.1 双指针
from typing import List
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
nums1_len, nums2_len = len(nums1), len(nums2)
index1, index2 = 0, 0
nums1.sort()
nums2.sort()
res = list()
while index1 < nums1_len and index2 < nums2_len:
# 两个数相等, 并且先前 没有加入过,那么加入到res中
if nums1[index1] == nums2[index2]:
if not res or res[-1] != nums1[index1]:
res.append(nums1[index1])
index1 += 1
index2 += 1
# 两个数不相等, 指向较小数的指针右移
elif nums1[index1] < nums2[index2]:
index1 += 1
else:
index2 += 1
return res
def main(self):
nums1 = [4, 9, 5]
nums2 = [9, 4, 9, 8, 4]
print(self.intersection(nums1, nums2))
if __name__ == '__main__':
solution = Solution()
solution.main()
2.2 函数式编程之美
最近学习Scala,尝试一下
object Solution {
def intersection(nums1: Array[Int], nums2: Array[Int]): Array[Int] = {
(nums1 intersect nums2).distinct
}
}
当然了,python的骚操作还是有的
return list(set(nums1.extend(nums2)))
return list(set(nums1)&set(nums2))