Number of Good Pairs - Leetcode 1512 - PlayBASIC

Started by kevin, March 10, 2024, 10:40:45 PM

Previous topic - Next topic

kevin

#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 ?   :)



PlayBASIC Code: [Select]
 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