🔥 Intersection of Two Arrays II 🔥 || 3 Approaches || Simple Fast and Easy || with Explanation import 'dart:collection' ; class Solution { List <int > intersect (List <int > nums1, List <int > nums2) { if (nums1.isEmpty || nums2.isEmpty || nums1.length == 0 || nums2.length == 0 ) return []; HashMap <int , int > map = HashMap (); List <int > result = []; for (int number in nums1) if (map.containsKey (number)) map[number] = map[number]! + 1 ; else map[number] = 1 ; for (int number in nums2) { if (map.containsKey (number) && map[number]! > 0 ) { result.add (number); int freq = map[number]! ; freq-- ; map[number] = freq; } } return listToArray (result); } List <int > listToArray (List <int > list) { List <int > result = List .filled (list.length, 0 ); for (int i = 0 ; i < list.length; i++ ) { result[i] = list.elementAt (i); } return result; } }class Solution { List <int > intersect (List <int > nums1, List <int > nums2) { nums1.sort (); nums2.sort (); List <int > res = []; int left = 0 , right = 0 ; while (left < nums1.length && right < nums2.length) { if (nums1[left] == nums2[right]) { res.add (nums1[left]); left++ ; right++ ; } else if (nums1[left] < nums2[right]) { left++ ; } else right++ ; } return res; } }class Solution { List <int > intersect (List <int > nums1, List <int > nums2) { List <int > arr = List .filled (1001 , 0 ); List <int > ans = List .filled (1001 , 0 ); int count = 0 ; for (int i in nums1) { arr[i]++ ; } for (int i in nums2) { if (arr[i] > 0 ) { ans[count++ ] = i; arr[i]-- ; } } return List .copyRange (ans, 0 , [0 , count]) as List <int >; } }