LeetCode解题 Day17

350. Intersection of Two Arrays II

https://leetcode.com/problems/intersection-of-two-arrays-ii/


题目解释

你会得到两组数列num1、num2 ,请回传两组数列的交集

example

https://i.imgur.com/CSrfydc.png

解法

一开始有想到两种解法

第一种是先比较两者的长度,之後把短的那组数列出现的数字对对看长的那组有没有出现,有的话就把它记录起来并从厂的那组数列删掉

程序码1

class Solution:
    def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]:
        
        if len(nums1) > len(nums2):
            nums1, nums2 = nums2, nums1
        
        ans = []
        for i in nums1:
            if i in set(nums2):
                n = nums2.pop(nums2.index(i))
                ans.append(n)
        
        return ans

程序码2

第二种是先把两组数列都排序,排完後从两组数列的第一个数字同时比较:

  1. 如果数列1的比较大,就拿出数列2的下个数字来比较
  2. 如果数列1的比较小,那就换数列1的下个数字出来比较
  3. 如果两者相同,那就是我们要的数字了
class Solution:
    def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]:
        
        nums1.sort()
        nums2.sort()
        
        ptr1 = 0
        ptr2 = 0
        ans = []
        while ptr1 != len(nums1) and ptr2 != len(nums2):
            
            if nums1[ptr1] > nums2[ptr2]:
                ptr2 += 1
            
            elif nums1[ptr1] < nums2[ptr2]:
                ptr1 += 1
                
            else:
                ans.append(nums1[ptr1])
                ptr1 += 1
                ptr2 += 1
        
        return ans

闲聊

今天题目是简单题目,在discussion有很多蛮有趣的解法

我的解法都只是基本中的基本


<<:  设计模式种类与建议研读方法

>>:  [ 卡卡 DAY 2 ] - React Native 是什麽? 原理?优点?

企业资料通讯Week5 (2) | electronic mail [SMTP部分]

electronic mail 三要件 1. user agents(UA) 邮件使用者代理人,也叫...

Day 13:Python基本介绍06 | 函数、读写档案、引用

早安安! 今天是Python基本介绍的最後一天了~ 6天真的太短了,有好多东西想讲但都讲不完 ಥ⌣ಥ...

Sudoku Solution Validator

今日kata 原始题目如下:(4kyu) Write a function validSolutio...

到底是什麽意思?Typescript Partial<Type>

今天在翻旧code的时候,看到了 Partial 的写法,所幸来查查这到底是什麽意思.弄懂了之後看c...

[Day17] Vue 3 单元测试 (Unit Testing) - Vue Test Utils + Jest 基本范例 & 核心语法

在开始进入复杂的内容之前,我想先带大家认识几个会大量出现在每一个测试程序码里的核心语法,这些语法如果...