#1512. Number of Good Pairs
Given an array of integers nums, return the number of good pairs.
A pair (i, j) is called good if nums == nums[j] and i < j.
Example 1:
Input: nums = [1,2,3,1,1,3]
Output: 4
Explanation: There are 4 good pairs (0,3), (0,4), (3,4), (2,5) 0-indexed.
Example 2:
Input: nums = [1,1,1,1]
Output: 6
Explanation: Each pair in the array are good.
Example 3:
Input: nums = [1,2,3]
Output: 0
Constraints:
1 <= nums.length <= 100
1 <= nums <= 100
Here's solution in PlayBASIC. It breaks down into a two pass solution, Using an array to map the number of values that have collisions (pairs) and then tally those up. I feel like this could be solved it in one pass, can you do it ? :)
[pbcode]
Test$="1,2,3,1,1,3"
; Test$="1,1,1,1";
;Test$="1,2,3"
print "Test:"+Test$
// Split this split into an numeric array
dim Numbers(0)
Count=Splittoarray(Test$,",",Numbers())
// count unique values
dim Values(10)
for lp=0 to Count-1
ThisValue = Numbers(lp)
Values(ThisValue)++
next
// compute total good pairs
TotalPairs = 0
for lp=0 to GetarrayElements(Values())
Count = Values(lp)
do count>0
count--
TotalPairs+=(Count)
loop
next
print "Good Pairs:"+str$(totalPairs)
sync
waitkey
[/pbcode]