Skip to content

Commit

Permalink
New Problem Solution - "1726. Tuple with Same Product"
Browse files Browse the repository at this point in the history
  • Loading branch information
haoel committed Apr 27, 2021
1 parent 6f4d553 commit 6ae726e
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ LeetCode
|1734|[Decode XORed Permutation](https://leetcode.com/problems/decode-xored-permutation/) | [C++](./algorithms/cpp/decodeXORedPermutation/DecodeXoredPermutation.cpp)|Medium|
|1733|[Minimum Number of People to Teach](https://leetcode.com/problems/minimum-number-of-people-to-teach/) | [C++](./algorithms/cpp/minimumNumberOfPeopleToTeach/MinimumNumberOfPeopleToTeach.cpp)|Medium|
|1732|[Find the Highest Altitude](https://leetcode.com/problems/find-the-highest-altitude/) | [C++](./algorithms/cpp/findTheHighestAltitude/FindTheHighestAltitude.cpp)|Easy|
|1726|[Tuple with Same Product](https://leetcode.com/problems/tuple-with-same-product/) | [C++](./algorithms/cpp/tupleWithSameProduct/TupleWithSameProduct.cpp)|Medium|
|1725|[Number Of Rectangles That Can Form The Largest Square](https://leetcode.com/problems/number-of-rectangles-that-can-form-the-largest-square/) | [C++](./algorithms/cpp/numberOfRectanglesThatCanFormTheLargestSquare/NumberOfRectanglesThatCanFormTheLargestSquare.cpp)|Easy|
|1718|[Construct the Lexicographically Largest Valid Sequence](https://leetcode.com/problems/construct-the-lexicographically-largest-valid-sequence/) | [C++](./algorithms/cpp/constructTheLexicographicallyLargestValidSequence/ConstructTheLexicographicallyLargestValidSequence.cpp)|Medium|
|1717|[Maximum Score From Removing Substrings](https://leetcode.com/problems/maximum-score-from-removing-substrings/) | [C++](./algorithms/cpp/maximumScoreFromRemovingSubstrings/MaximumScoreFromRemovingSubstrings.cpp)|Medium|
Expand Down
61 changes: 61 additions & 0 deletions algorithms/cpp/tupleWithSameProduct/TupleWithSameProduct.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
// Source : https://leetcode.com/problems/tuple-with-same-product/
// Author : Hao Chen
// Date : 2021-04-27

/*****************************************************************************************************
*
* Given an array nums of distinct positive integers, return the number of tuples (a, b, c, d) such
* that a * b = c * d where a, b, c, and d are elements of nums, and a != b != c != d.
*
* Example 1:
*
* Input: nums = [2,3,4,6]
* Output: 8
* Explanation: There are 8 valid tuples:
* (2,6,3,4) , (2,6,4,3) , (6,2,3,4) , (6,2,4,3)
* (3,4,2,6) , (4,3,2,6) , (3,4,6,2) , (4,3,6,2)
*
* Example 2:
*
* Input: nums = [1,2,4,5,10]
* Output: 16
* Explanation: There are 16 valids tuples:
* (1,10,2,5) , (1,10,5,2) , (10,1,2,5) , (10,1,5,2)
* (2,5,1,10) , (2,5,10,1) , (5,2,1,10) , (5,2,10,1)
* (2,10,4,5) , (2,10,5,4) , (10,2,4,5) , (10,2,4,5)
* (4,5,2,10) , (4,5,10,2) , (5,4,2,10) , (5,4,10,2)
*
* Example 3:
*
* Input: nums = [2,3,4,6,8,12]
* Output: 40
*
* Example 4:
*
* Input: nums = [2,3,5,7]
* Output: 0
*
* Constraints:
*
* 1 <= nums.length <= 1000
* 1 <= nums[i] <= 10^4
* All elements in nums are distinct.
******************************************************************************************************/

class Solution {
public:
int tupleSameProduct(vector<int>& nums) {
unordered_map<int, int> stat;
for(int i = 0; i < nums.size(); i++) {
for ( int j = i+1; j < nums.size(); j++) {
stat[nums[i]*nums[j]]++;
}
}

int result = 0;
for ( auto [n, cnt] : stat) {
if (cnt > 1) result += cnt*2 * (cnt-1)*2;
}
return result;
}
};

0 comments on commit 6ae726e

Please sign in to comment.