1. 程式人生 > >LeetCode刷題之350Python兩個陣列的交集II

LeetCode刷題之350Python兩個陣列的交集II

題目:

給定兩個陣列,編寫一個函式來計算它們的交集。

示例 1:

輸入: nums1 = [1,2,2,1], nums2 = [2,2]
輸出: [2,2]

示例 2:

輸入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
輸出: [4,9]

說明:

  •   輸出結果中每個元素出現的次數,應與元素在兩個陣列中出現的次數一致。
  •    我們可以不考慮輸出結果的順序。

進階:

  • 如果給定的陣列已經排好序呢?你將如何優化你的演算法?
  • 如果 nums1 的大小比 nums2 小很多,哪種方法更優?
  • 如果 nums2 的元素儲存在磁碟上,磁碟記憶體是有限的,並且你不能一次載入所有的元素到記憶體中,你該怎麼辦?

我的思路是仿照上一題用set求出交集後,用count計算交集中每個元素分別在兩個陣列中出現的次數,取較小的次數複製該元素。

看看人家的答案提神醒腦。不需要用到這些外掛功能函式。交集中增加一個就把nums2中刪除一個,這樣一次就得到結果。

        https://blog.csdn.net/zhenghaitian/article/details/80896392
        https://blog.csdn.net/IT_job/article/details/80410686
        https://blog.csdn.net/xiaoxiaoley/article/details/79095045

class Solution(object):
    def intersect(self, nums1, nums2):
        """
        :type nums1: List[int]
        :type nums2: List[int]
        :rtype: List[int]

        """
        res = []
        for k in nums1:
            if k in nums2:
                res.append(k)
                nums2.remove(k)
        return res

相關推薦

LeetCode350Python陣列交集II

題目: 給定兩個陣列,編寫一個函式來計算它們的交集。 示例 1: 輸入: nums1 = [1,2,2,1], nums2 = [2,2] 輸出: [2,2] 示例 2: 輸入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 輸出: [

LeetCode349Python陣列交集

題目: 給定兩個陣列,編寫一個函式來計算它們的交集。 示例 1: 輸入: nums1 = [1,2,2,1], nums2 = [2,2] 輸出: [2] 示例 2: 輸入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 輸出: [9,

C#LeetCode#278-第一錯誤的版本(First Bad Version)

問題 你是產品經理,目前正在帶領一個團隊開發新的產品。不幸的是,你的產品的最新版本沒有通過質量檢測。由於每個版本都是基於之前的版本開發的,所以錯誤的版本之後的所有版本都是錯的。 假設你有 n 個版本 [1, 2, ..., n],你想找出導致之後所有版本出錯的第一個錯誤的版本。 你可

LeetCode數之和

題目: 給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例: 給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] = 2 + 7 = 9 所

劍指offer棧實現佇列

題目描述 用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。 # -*- coding:utf-8 -*- class Solution:     def __init__(self):      

LeetCodeEasy篇二叉樹是否相同

題目 Given two binary trees, write a function to check if they are the same or not. Two binary trees are considered the same if they are structurall

LeetCodeEasy篇二進位制字串相加,“和”也是二進位制字串

題目 Given two binary strings, return their sum (also a binary string). The input strings are both non-empty and contains only characters&

LeetCode三:判斷二叉樹是否相同

題目為: Given two binary trees, write a function to check if they are equal or not. Two binary trees are considered equal if they are str

C#LeetCode#21-合併有序連結串列(Merge Two Sorted Lists)

問題 將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。  輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4->4 Merge

#leetcode路4-尋找有序數組的中位數

大小 let pre 個數 clu emp 。。 tco net 給定兩個大小為 m 和 n 的有序數組 nums1 和 nums2。請你找出這兩個有序數組的中位數,並且要求算法的時間復雜度為 O(log(m + n))。你可以假設 nums1 和 nums2 不會同時為空

Leetcode 陣列

入門級 三路快排 指標對撞 滑動視窗 入門級 283. Move Zeroes class Solution { public: void swap(vector<

Go語言的LeetCode旅-002-數相加

Go語言的LeetCode刷題之旅-02-兩數相加 題目: 給定兩個非空連結串列來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回一個新的連結串列。 你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。 示

LeetCode350. 陣列交集 II

運用的知識:  對映    。              參考:自定義對映(Map)   題目描述: 給

LeetCode349. 陣列交集

運用的知識:集合   。   參考:自定義集合(Set)   題目描述: 給定兩個陣列,編寫一個函式來計算它們的交集。 示例 1: 輸入: nums1 = [1,2,2,1], nums2 = [2,2] 輸出: [2]

LeetCode387Python字串中的第一唯一字元

題目: 給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。 案例: s = "leetcode" 返回 0. s = "loveleetcode", 返回 2. 注意事項:您可以假定該字串只包含小寫字母。 我的解答: 先計數,

#leetcode路1-數之和

方法 ostream str div mes title get align binding 題目: 給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和為目標值的那 兩個 整數,並返回他們的數組下標。 你可以假設每種輸入只會對應一個答案。但是,你不

#leetcode路25- k一組翻轉鏈表

而是 The 總數 while循環 main 繼續 nullptr 之前 node 給出一個鏈表,每 k 個節點一組進行翻轉,並返回翻轉後的鏈表。k 是一個正整數,它的值小於或等於鏈表的長度。如果節點總數不是 k 的整數倍,那麽將最後剩余節點保持原有順序。 示例 :給定這

#leetcode路41-缺失的第一正數

ostream == return pac ssi n) continue etc mes 給定一個未排序的整數數組,找出其中沒有出現的最小的正整數。示例 1:輸入: [1,2,0]輸出: 3示例 2:輸入: [3,4,-1,1]輸出: 2示例 3:輸入: [7,8,9,1

leetcode 路 68 Gas Station

rom 說明 之路 bsp margin tom otto mono lee There are N gas stations along a circular route, where the amount of gas at station i is gas[i]

leetcode 字符串反轉

solution arr reverse eof HA rev code toc val 請編寫一個函數,其功能是將輸入的字符串反轉過來。 示例: 輸入:s = "hello" 返回:"olleh" 註:這裏之所以不使用倒敘遍歷strs,是因為字符串拼接的效率很低,str+