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
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