DEV Community

Cover image for 350. Intersection of Two Arrays II
MD ARIFUL HAQUE
MD ARIFUL HAQUE

Posted on

350. Intersection of Two Arrays II

350. Intersection of Two Arrays II

Easy

Given two integer arrays nums1 and nums2, return an array of their intersection. Each element in the result must appear as many times as it shows in both arrays, and you may return the result in any order.

Example 1:

  • Input: nums1 = [1,2,2,1], nums2 = [2,2]
  • Output: [2,2]

Example 2:

  • Input: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
  • Output: [4,9]
  • Explanation: [9,4] is also accepted.

Constraints:

  • 1 <= nums1.length, nums2.length <= 1000
  • 0 <= nums1[i], nums2[i] <= 1000

Solution:

class Solution {

    /**
     * @param Integer[] $nums1
     * @param Integer[] $nums2
     * @return Integer[]
     */
    function intersect($nums1, $nums2) {
        // Count occurrences of each element in both arrays
        $counts1 = array_count_values($nums1);
        $counts2 = array_count_values($nums2);

        $intersection = [];

        // Iterate through the first count array
        foreach ($counts1 as $num => $count) {
            // Check if the element exists in the second array
            if (isset($counts2[$num])) {
                // Find the minimum occurrence
                $minCount = min($count, $counts2[$num]);
                // Add the element to the result array, repeated $minCount times
                for ($i = 0; $i < $minCount; $i++) {
                    $intersection[] = $num;
                }
            }
        }

        return $intersection;
    }
}
Enter fullscreen mode Exit fullscreen mode

Contact Links

Top comments (0)