# Solving Leetcode Interviews in Seconds with AI: Count Elements With Strictly Smaller and Greater Elements


	# Introduction
	In this blog post, we will explore how to solve the LeetCode problem "2148" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like [Chatmagic](https://www.chatmagic.app), we can generate solutions quickly and efficiently - helping you pass the interviews and get the job offer without having to study for months.

	# Problem Statement
	> Given an integer array nums, return the number of elements that have both a strictly smaller and a strictly greater element appear in nums.   Example 1:  Input: nums = [11,7,2,15] Output: 2 Explanation: The element 7 has the element 2 strictly smaller than it and the element 11 strictly greater than it. Element 11 has element 7 strictly smaller than it and element 15 strictly greater than it. In total there are 2 elements having both a strictly smaller and a strictly greater element appear in nums.  Example 2:  Input: nums = [-3,3,3,90] Output: 2 Explanation: The element 3 has the element -3 strictly smaller than it and the element 90 strictly greater than it. Since there are two elements with the value 3, in total there are 2 elements having both a strictly smaller and a strictly greater element appear in nums.    Constraints:  1 <= nums.length <= 100 -105 <= nums[i] <= 105  

	# Explanation
	Here's a breakdown of the solution:

*   **Identify Extremes:** Find the minimum and maximum values in the array.
*   **Count Valid Elements:** Iterate through the array and count elements that are strictly greater than the minimum and strictly smaller than the maximum.

*   **Runtime Complexity:** O(n), where n is the length of the array. **Storage Complexity:** O(1).

	
	# Code
	```python
	def count_elements(nums):
    """
    Counts the number of elements in an array that have both a strictly smaller and a strictly greater element.

    Args:
        nums: An integer array.

    Returns:
        The number of elements that have both a strictly smaller and a strictly greater element.
    """

    if not nums or len(nums) < 3:
        return 0

    min_val = nums[0]
    max_val = nums[0]

    for num in nums:
        min_val = min(min_val, num)
        max_val = max(max_val, num)

    count = 0
    for num in nums:
        if num > min_val and num < max_val:
            count += 1

    return count
	```
			
