UnderwareDESIGN

PlayBASIC => Resources => Source Codes => Topic started by: kevin on March 10, 2024, 10:40:45 PM

Title: Number of Good Pairs - Leetcode 1512 - PlayBASIC
Post by: kevin on March 10, 2024, 10:40:45 PM
#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]