# Solving Leetcode Interviews in Seconds with AI: Maximum Swap


	# Introduction
	In this blog post, we will explore how to solve the LeetCode problem "670" 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 integer num. You can swap two digits at most once to get the maximum valued number. Return the maximum valued number you can get.   Example 1:  Input: num = 2736 Output: 7236 Explanation: Swap the number 2 and the number 7.  Example 2:  Input: num = 9973 Output: 9973 Explanation: No swap.    Constraints:  0 <= num <= 108  

	# Explanation
	*   **Convert to String:** Transform the integer into a string to easily manipulate individual digits.
*   **Find Optimal Swap:** Iterate through the string, searching for the rightmost digit to swap with the current digit to maximize the number.
*   **Perform Swap:** If a suitable swap is found, perform the swap and return the resulting integer.

*   **Runtime Complexity:** O(N^2), where N is the number of digits in the input number. **Storage Complexity:** O(N) to store the string representation of the number.

	
	# Code
	```python
	def maximumSwap(num: int) -> int:
    """
    Given a non-negative integer, you could swap two digits at most once to get the maximum valued number.
    Return the maximum valued number you could get.

    Example 1:
    Input: num = 2736
    Output: 7236
    Explanation: Swap the number 2 and the number 7.

    Example 2:
    Input: num = 9973
    Output: 9973
    Explanation: No swap.

    Constraints:
    0 <= num <= 10^8
    """
    s = list(str(num))
    n = len(s)

    max_idx = -1
    idx1 = -1
    idx2 = -1

    for i in range(n):
        max_idx = i
        for j in range(i + 1, n):
            if s[j] >= s[max_idx]:
                max_idx = j

        if s[i] != s[max_idx]:
            idx1 = i
            idx2 = max_idx
            break

    if idx1 == -1:
        return num

    s[idx1], s[idx2] = s[idx2], s[idx1]
    return int("".join(s))
	```
			
