# Solving Leetcode Interviews in Seconds with AI: Maximize the Total Height of Unique Towers


	# Introduction
	In this blog post, we will explore how to solve the LeetCode problem "3301" 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
	> You are given an array maximumHeight, where maximumHeight[i] denotes the maximum height the ith tower can be assigned. Your task is to assign a height to each tower so that:  The height of the ith tower is a positive integer and does not exceed maximumHeight[i]. No two towers have the same height.  Return the maximum possible total sum of the tower heights. If it's not possible to assign heights, return -1.   Example 1:  Input: maximumHeight = [2,3,4,3] Output: 10 Explanation: We can assign heights in the following way: [1, 2, 4, 3].  Example 2:  Input: maximumHeight = [15,10] Output: 25 Explanation: We can assign heights in the following way: [15, 10].  Example 3:  Input: maximumHeight = [2,2,1] Output: -1 Explanation: It's impossible to assign positive heights to each index so that no two towers have the same height.    Constraints:  1 <= maximumHeight.length <= 105 1 <= maximumHeight[i] <= 109  

	# Explanation
	Here's the breakdown of the solution:

*   **Sort and Iterate:** Sort the `maximumHeight` array. Then, iterate through the sorted array, assigning heights from 1 up to `n` (the number of towers), ensuring each assigned height doesn't exceed the corresponding `maximumHeight` value.
*   **Check for Infeasibility:** If at any point the required height `i+1` (since we're assigning from 1) exceeds the `maximumHeight[i]`, it's impossible to assign distinct heights, so return -1.
*   **Calculate Sum:** Accumulate the assigned heights to get the maximum possible sum.

*   **Runtime Complexity:** O(n log n) due to sorting. **Storage Complexity:** O(n) in the worst-case due to Python's `sorted()` function creating a copy. In-place sorting algorithms exist but might not be Python's default `sorted()`.

	
	# Code
	```python
	def maximum_tower_height_sum(maximumHeight):
    """
    Calculates the maximum possible sum of tower heights under the given constraints.

    Args:
        maximumHeight: A list of integers representing the maximum height of each tower.

    Returns:
        The maximum possible total sum of the tower heights, or -1 if it's impossible to assign heights.
    """
    n = len(maximumHeight)
    sorted_heights = sorted(maximumHeight)
    total_sum = 0
    for i in range(n):
        required_height = i + 1
        if required_height > sorted_heights[i]:
            return -1
        total_sum += required_height
    return total_sum
	```
			
