I just finished your strings playlist in which you had similar problem. In that, you used the pointer approach. I used similar strategy: function missingNums(a1, a2) { let i = 0//pointer for a1 let result = [] for (let j = 0; j < a2.length; j++) { if (a2[j] === a1[i]) { i++ } else { result.push(a2[j]) } } //sort in ascending order return result.sort((a, b) => a - b) } Which approach would be considered better?
Hi Nikhil, Great Explanation. Can I ask you a doubt? I tried to work below code ,passed test cases except test case 1. Any suggestion would be appreciated def missingNumbers(arr, brr): brr_copy = brr.copy() # Create a copy of brr to avoid modifying the original list
for i in arr: if i in brr_copy: brr_copy.remove(i)
@@nikoo28 i mean in case where 2 times 1 is there in IntegeerFreqmap after removing numbers from arr then in final loop how times 1 will be inserted. as result[i++]=IntegeerFreqmap.getKey() value in . We are not checking frequency to put in resultSet.
Let us go over it step by step. Suppose you have two 1’s In the first loop you create the map and the frequency would be stored as “1 -> 2” In the next loop if you find one 1 in the other array you subtract a frequency so the map changes to “1 -> 1” In the final loop you look at the remaining elements in the frequency map. You find a frequency and hence the code works.
Still have similar doubt. What if in second array both the two 1s got missed from array 1 then in the MAP you will have like 1->2 then for such frequencies you will have to add the 1 entry 2 times in the final output
NOBODY EXPLAINED IN SUCH DETAILS LIKE YOU.GO ON.
Thank you so much for your support.
I just finished your strings playlist in which you had similar problem. In that, you used the pointer approach.
I used similar strategy:
function missingNums(a1, a2) {
let i = 0//pointer for a1
let result = []
for (let j = 0; j < a2.length; j++) {
if (a2[j] === a1[i]) {
i++
} else {
result.push(a2[j])
}
}
//sort in ascending order
return result.sort((a, b) => a - b)
}
Which approach would be considered better?
What is the time complexity of your approach?
Hi Nikhil,
Great Explanation.
Can I ask you a doubt? I tried to work below code ,passed test cases except test case 1.
Any suggestion would be appreciated
def missingNumbers(arr, brr):
brr_copy = brr.copy() # Create a copy of brr to avoid modifying the original list
for i in arr:
if i in brr_copy:
brr_copy.remove(i)
return sorted(brr_copy)
have you tried to debug with some test cases?
I think tree map insertion time complexity is logn. So inserting n elements will have a time complexity of nlongn and not n.
Amazing, amazing, amazing...............
Great explanation brother
THANK YOU BROTHER.
1 test case is failing by use of map.......i also did while loop to managee multiple frequencies ....even then its failing 1 test case
Can you give me an example of the test case. The solution I submitted on hackerrank passes all cases.
I'm not a java guy but wonder time complexity of TreeMap to maintan the items in sorted order.
A TreeMap almost works in constant time.
awesome ❤
can i use for this solution stream api in java?
Yes, you should be able to
in case of repeted freequency that is if 1 is more than 1 then the code is not right.
The code is correct. We subtract frequency by "1" for every repeated number. Can you show me a test case for which the code fails?
@@nikoo28 i mean in case where 2 times 1 is there in IntegeerFreqmap after removing numbers from arr then in final loop how times 1 will be inserted. as result[i++]=IntegeerFreqmap.getKey() value in . We are not checking frequency to put in resultSet.
Let us go over it step by step. Suppose you have two 1’s
In the first loop you create the map and the frequency would be stored as “1 -> 2”
In the next loop if you find one 1 in the other array you subtract a frequency so the map changes to “1 -> 1”
In the final loop you look at the remaining elements in the frequency map. You find a frequency and hence the code works.
@@nikoo28 got it I was thinking some else thing only read the question again thankyou so much
Still have similar doubt. What if in second array both the two 1s got missed from array 1 then in the MAP you will have like 1->2 then for such frequencies you will have to add the 1 entry 2 times in the final output
Awesome 😊😎
Is there another way to solve it???
You can try to solve it using a frequency array where each index stores the count of each element in first array
@@nikoo28 okk
❤❤❤❤❤❤❤❤❤❤
Wow
Can Someone give code in Python