Posts

Showing posts with the label Hashset

Maximum Square Area by Removing Fences From a Field - Hashset on Fence Diffs [JS]

Description   Solution: Hashset on Fence Diffs Use a hashset to store the differences between each pair of horizontal fences. Find any common fence differences between the horizontal and vertical fences, and record the maximum such difference. h = length of hFences ,  v = length of vFences Time Complexity:  O(h^2 + v^2) Space Complexity:  O(h^2) var maximizeSquareArea = function ( m, n, hFences, vFences ) { hFences.push( 1 ), hFences.push(m); vFences.push( 1 ), vFences.push(n); let hDiffs = new Set (); for ( let i = 0 ; i < hFences.length; i++) { for ( let j = i + 1 ; j < hFences.length; j++) { let diff = Math .abs(hFences[i] - hFences[j]); hDiffs.add(diff); } } let maxDiff = 0 ; for ( let i = 0 ; i < vFences.length; i++) { for ( let j = i + 1 ; j < vFences.length; j++) { let diff = Math .abs(vFences[i] - vFences[j]); if (hDiffs.has(diff)) maxDiff = Math .max(maxDiff, diff); } } retu...

Distinct Prime Factors of Product of Array - Find Prime Factors of Each Number [JS]

Description   Solution: Find Prime Factors of Each Number Every number greater than 1 is made up of a product of prime numbers. Therefore we don't need to multiply the numbers together, we can get the prime factors from each individual number. Store the prime factors in a set and return the size of the set at the end. n = length of nums ,  m = max(nums[i]) Time Complexity:  O(n sqrt(m)) Space Complexity:  O(sqrt(m)) var distinctPrimeFactors = function ( nums ) { let distinct = new Set (); for ( let num of nums) { for ( let x = 2 ; (x * x) <= num; x++) { while (num % x === 0 ) { distinct.add(x); num /= x; } } if (num > 1 ) distinct.add(num); } return distinct.size; };

Count Number of Distinct Integers After Reverse Operations - Hashset [JS]

Description   Solution: Hashset Add all numbers and reversed numbers to a hashset and return the size. Reversing a number costs  O(log(n)) . Time Complexity:  O(n log(n))  243ms Space Complexity:  O(n)  78.3MB var countDistinctIntegers = function ( nums ) { let set = new Set (nums); for ( let num of nums) { set.add(reverse(num)); } return set.size; }; function reverse ( num ) { let reversed = 0 ; while (num > 0 ) { let digit = num % 10 ; reversed = reversed * 10 + digit; num = Math .floor(num / 10 ); } return reversed; }