Counting Elements Python

Given an integer array arr, count element x such that x + 1 is also in arr.
If there're duplicates in arr, count them seperately.

Example 1:
Input: arr = [1,2,3]
Output: 2
Explanation: 1 and 2 are counted cause 2 and 3 are in arr.
Example 2:
Input: arr = [1,1,3,3,5,5,7,7]
Output: 0
Explanation: No numbers are counted, cause there's no 2, 4, 6, or 8 in arr.
Example 3:
Input: arr = [1,3,2,3,5,0]
Output: 3
Explanation: 0, 1 and 2 are counted cause 1, 2 and 3 are in arr.
Example 4:
Input: arr = [1,1,2,2]
Output: 2
Explanation: Two 1s are counted cause 2 is in arr.

Constraints:
  • 1 <= arr.length <= 1000
  • 0 <= arr[i] <= 1000
 Python : Solution 1

class Solution:
    def countElements(self, arr: List[int]) -> int:
        count = 0
        for x in arr:
            if x+1 in arr:
                count+=1
        return count

Time Complexity : O(n*n) because search in entire list
Space Complexity : O(1)

Python : Solution 2

class Solution:
    def countElements(self, arr: List[int]) -> int:
        hash_set = set(arr)
        count = 0
        for x in arr:
            if x+1 in hash_set:
                count+=1
        return count

Time Complexity : O(n) because search in hash set is O(1) 
Space Complexity : O(n)


Python Solution 3

class Solution:
    def countElements(self, arr: List[int]) -> int:
        arr.sort()
        count = 0
        run_length = 1
        for i in range(len(arr)):
            if arr[i-1] != arr[i]:
                if arr[i-1]+1 == arr[i]:
                    count +=run_length
                run_length = 0
            run_length+=1
        return count

Time Complexity : O(nlogn)
Space Complexity : O(n) to O(1)




No comments:

Post a Comment

Featured Post

H1B Visa Stamping at US Consulate

  H1B Visa Stamping at US Consulate If you are outside of the US, you need to apply for US Visa at a US Consulate or a US Embassy and get H1...