daily_leetcode_2020_1102_349_两个数组的交集


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 &#123;
    def intersection(nums1: Array[Int], nums2: Array[Int]): Array[Int] = &#123;
        (nums1 intersect nums2).distinct
    &#125;
&#125;

当然了,python的骚操作还是有的

return list(set(nums1.extend(nums2)))
return list(set(nums1)&set(nums2))

作者: jdi146
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 jdi146 !
评论
评论
  目录