Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

จุดตัดของ Two Arrays II ใน Python


สมมติว่าเรามีสองอาร์เรย์ A และ B มีองค์ประกอบน้อยในอาร์เรย์เหล่านี้ เราต้องหาจุดตัดของพวกมัน ดังนั้น ถ้า A =[1, 4, 5, 3, 6] และ B =[2, 3, 5, 7, 9] ทางแยกจะเป็น [3, 5]

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • รับสองอาร์เรย์ A และ B
  • ถ้าความยาวของ A น้อยกว่าความยาวของ B ให้เปลี่ยนมัน
  • คำนวณความถี่ขององค์ประกอบในอาร์เรย์และเก็บไว้ใน m
  • สำหรับแต่ละองค์ประกอบ e ใน B ถ้า e มีหน่วยเป็น m และความถี่ไม่เป็นศูนย์
    • ลดความถี่ m[e] ลง 1
    • แทรก e ลงในอาร์เรย์ผลลัพธ์
  • คืนค่าอาร์เรย์ผลลัพธ์

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

class Solution(object):
   def intersect(self, nums1, nums2):
      """
      :type nums1: List[int]
      :type nums2: List[int]
      :rtype: List[int]
      """
      m = {}
      if len(nums1)<len(nums2):
         nums1,nums2 = nums2,nums1
      for i in nums1:
         if i not in m:
            m[i] = 1
         else:
            m[i]+=1
      result = []
      for i in nums2:
         if i in m and m[i]:
            m[i]-=1
            result.append(i)
      return result
ob1 = Solution()
print(ob1.intersect([1,4,5,3,6], [2,3,5,7,9]))

อินพุต

[1,4,5,3,6]
[2,3,5,7,9]

ผลลัพธ์

[3,5]