You are given two data sets:
(
-
a call log containing phone numbers observed in calls and
(
-
a list of user reports where each entry is a phone number reported as spam (potentially with duplicates). Parse and cross-reference these inputs to output each spam phone number present in the call log and the number of times it was reported. Describe the algorithm, data structures (e.g., hash maps), handling of invalid numbers, and time/space complexity. Provide code in your preferred language.